* Tassilo von Parseval (tassilo.parseval@xxxxxxxxxxxxxxxxxxx) [030525 08:29]:
> On Sun, May 25, 2003 at 02:29:52PM +0800 Greg Matheson wrote:
> > This example in the Mail::Message::Body foreachLine docs
> > doesn't work for me.
> >
> > $content->foreachLine( sub {(my $x=$_) =~ s/a/A/} );
> > This does:
> > $content->foreachLine( sub {(my $x=$_) =~ s/a/A/; return $x} );
> > The other examples work.
You're right.
> Your on-the-fly assignment tends to trick the reader into believing that
> $x is returned but it is really equivalent this expansion above.
>
> I often make the same mistake in a map
> @new_list = map { s/foo/bar/ } @list;
>
> when I meant to write
> @new_list = map { s/foo/bar/; $_ } @list;
This last example is a little silly, because it modifies both @list and
@new_list. I would prefer to write that as:
s/foo/bar/ for @list;
@new_list = @list;
Probably you also mean something like:
@new_list = map { (my $x = $_) =~ s/foo/bar/; $x } @list;
^^^ donot forget! ;-b
--
MarkOv %-]
------------------------------------------------------------------------
drs Mark A.C.J. Overmeer MARKOV Solutions
Mark@xxxxxxxxxxxx solutions@xxxxxxxxxxxx
http://Mark.Overmeer.net http://solutions.overmeer.net
|