in reply to Re: sub that sets $_
in thread sub that sets $_
That's not quite correct...
IO::Prompt returns an object, in that object bool is overloaded, and bool sets $_. (which is run for each iteration of the while to decided if it's a true or false value)
Which means that while ($z = prompt "") { will set $_ and $z. This is a bad idea. What if the code is used in an inner loop? when the outer loop uses $_ for example?
If one wants to get the same behaviour then it would be enough to do a simple assignment in the subroutine to $_ and return the value of $_.
Example code that is similar to the code in IO::Prompt
package Example; use overload q{bool} => sub { $_="def"; }; sub new { bless {}; } sub test { return $_[0]; } package main; my $z=new Example; $_="ghi"; while ($m = $z->test()) { print; print $m; last; };
Update: added relevant part of IO::Prompt
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^3: sub that sets $_
by TheDamian (Vicar) on Jun 29, 2005 at 00:04 UTC | |
by TheDamian (Vicar) on Jun 29, 2005 at 00:54 UTC |
In Section
Seekers of Perl Wisdom