Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re^2: Decimal Array range

by Gulliver (Monk)
on Dec 21, 2010 at 20:50 UTC ( #878359=note: print w/ replies, xml ) Need Help??

in reply to Re: Decimal Array range
in thread Decimal Array range

I didn't realize you could assign to $_ inside a foreach loop and it will change the scalars in the list.

Comment on Re^2: Decimal Array range
Replies are listed 'Best First'.
Re^3: Decimal Array range
by bart (Canon) on Dec 22, 2010 at 12:12 UTC
    In foreach, the loop variable (default $_) is an alias to the original value. That means that changing the value will change the original.
    my $x = 100; my @y = (10, 20, 30); foreach ($x, @y) { $_ *= 2; } local $" = ", "; print "\$x = $x\n\@y = (@y)\n";
    # or: foreach my $n ($x, @y) { $n *= 2; }

    Ditto in the block or expression for map and grep ($_ only).

    map { $_ *= 2 } $x, @y;
    grep { $_ *= 2 } $x, @y;

    BTW parameters to subs are aliases too, so if you change them in @_, you'll modify the originals too:

    sub double { foreach(@_) { $_ *= 2; } } double($x, @y);

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://878359]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (16)
As of 2015-11-30 17:40 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (778 votes), past polls