The problem is that your regex is matching the whole line: @ [EMAIL PROTECTED]@banana[4]; ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ $1 $2
Instead, use non greedy matches: $line =~ s/(@)(\S+?\[\S+?\])/\$$2/g; and you'll get what you want: @ array[1] = @ array[2] +@ banana[4]; ^ ^^^^^^^^ ^ ^^^^^^^^ ^ ^^^^^^^^^ $1 $2 $1 $2 $1 $2 Regards, jac On Thu, 2004-04-29 at 09:31, Owen wrote: > I would like to replace all instances of > > @non_space_characters[non_space_characters] with > $non_space_characters[non_space_characters] > > The program below gets the first one only. How do I get the others? > > TIA > > Owen > --------------------------------------------------- > #!/usr/bin/perl -w > use strict; > > my $line; > while (<DATA>){ > $line=$_; > #$line=~s/(@)(\S+)(\[\S+\])/\$$2$3/g; > $line=~s/(@)(\S+\[\S+\])/\$$2/g; > > print "$line\n"; > > } > __DATA__ > @[EMAIL PROTECTED]@banana[4]; -- Josà Alves de Castro <[EMAIL PROTECTED]> Telbit - Tecnologias de InformaÃÃo -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>