Ahhh, I see.  So this would work as well.

map {s/foo/bar/} @data;

....But the "for" seems to be a little bit faster which makes sense.

Benchmark: timing 1000000 iterations of FOR, MAP...
 FOR: 16 wallclock secs (15.84 usr +  0.00 sys = 15.84 CPU) @ 63119.36/s
(n=1000000)
 MAP: 19 wallclock secs (18.87 usr +  0.00 sys = 18.87 CPU) @ 52982.94/s
(n=1000000)

Thanks.

Rob


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Monday, February 04, 2002 1:34 PM
To: [EMAIL PROTECTED]
Subject: Re: Using =~ with a list


>>>>> "Randal" == Randal L Schwartz <[EMAIL PROTECTED]> writes:

>>>>> "Robert" == Robert Hanson <[EMAIL PROTECTED]> writes:
Robert> You probably want to use "map".
Robert> This should work.

Robert> @body = map { s/foo/bar/; $_ } (@body);

Randal> No.  Please don't answer without testing.

Randal> That messes up @body as well, since $_ is an alias back into the
Randal> original list.

And of course, I need to read better. :)  I was thinking it was

  @new = map { s/foo/bar; $_ } @body;

So Robert's solution was just plain wierd, although it will do the
job.  It's a bit like saying "$a = $a = 3 + $b".  Why the second
assignment? :)

Randal> This works:

Randal>         s/foo/bar/ for @body;

Randal> presuming you have a reasonably modern Perl.

And can read your own handwriting. :)

-- 
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<[EMAIL PROTECTED]> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl
training!

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to