http://www.perlmonks.org?node_id=470608


in reply to Re^2: sub that sets $_
in thread sub that sets $_

First of all congratulations with the excelent idea to use DESTROY to set $_.

Second, it still has a little bug though... it will set the value of $_ when the object gets destroyed... which is why it works and why it is bugged. Example:

$_ = "abc"; { my $line = $reader->chunk(); } print $_;
$_ won't have the value "abc"...

Update: since I'm not that familiar with overloading I re-looked at the overload pod... (to see if there is a function that is always called, so that the DESTROY could be made conditional/optional). In it I found an intresting overload option.

You can overload <>. This would mean that you can overload it in your main module and use <$reader>. Which will set the appropriate variable. (Using < $reader->chunk > is not possible since it is a syntax error. You could ofcourse assign it to a temp var and use that but what would be wrong with using <$reader>?)