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


in reply to Re^2: 5.18.0 is available NOW!
in thread 5.18.0 is available NOW!

What does 'lexical $_ is now experimental' mean? Is something like this still doable?

while(<SOMEHANDLE>) { chomp; my $string = "hello" .$_; print $string; }

Still work?

Replies are listed 'Best First'.
Re^4: 5.18.0 is available NOW!
by davido (Cardinal) on May 23, 2013 at 07:22 UTC

    Yes, still works. That's not explicitly creating a lexical $_.

    Here's an excerpt from Perl 5.18.0's "perlvar" (I'm not linking here because perldoc.perl.org hasn't loaded up v5.18 yet.):

    $_ is by default a global variable. However, as of perl v5.10.0, you can use a lexical version of $_ by declaring it in a file or in a block with "my". Moreover, declaring "our $_" restores the global $_ in the current scope. Though this seemed like a good idea at the time it was introduced, lexical $_ actually causes more problems than it solves. If you call a function that expects to be passed information via $_, it may or may not work, depending on how the function is written, there not being any easy way to solve this. Just avoid lexical $_, unless you are feeling particularly masochistic. For this reason lexical $_ is still experimental and will produce a warning unless warnings have been disabled. As with other experimental features, the behavior of lexical $_ is subject to change without notice, including change into a fatal error.


    Dave

Re^4: 5.18.0 is available NOW! (my $_)
by Anonymous Monk on May 23, 2013 at 07:25 UTC