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


in reply to Re^3: subroutine bewilderment: how to mimic builtins
in thread subroutine bewilderment: how to mimic builtins

my $_; is intended as a replacement for the not-ideal local $_; or local *_;.

perl591delta:

=head2 Lexical $_

The default variable $_ can now be lexicalized, by declaring it like any other lexical variable, with a simple

my $_;
The operations that default on $_ will use the lexically-scoped version of $_ when it exists, instead of the global $_.

In a map or a grep block, if $_ was previously my'ed, then the $_ inside the block is lexical as well (and scoped to the block).

In a scope where $_ has been lexicalized, you can still have access to the global version of $_ by using $::_, or, more simply, by overriding the lexical declaration with our $_.