Package : perl-lexical-underscore > RPM : perl-lexical-underscore-0.4.0-2.mga7.src.rpm
Basic items
Name | perl-lexical-underscore |
Version | 0.4.0 |
Release | 2.mga7 |
URL | http://search.cpan.org/dist/lexical-underscore |
Group | Development/Perl |
Summary | Access your caller's lexical underscore |
Size | 18KB |
Arch | noarch |
License | GPL+ or Artistic |
Description
Starting with Perl 5.10, it is possible to create a lexical version of
the Perl default variable $_. Certain Perl constructs like the "given"
keyword automatically use a lexical $_ rather than the global $_.
It is occasionallly useful for a sub to be able to access its caller's
$_ variable regardless of whether it was lexical or not. The "(_)" sub
prototype is the official way to do so, however there are sometimes
disadvantages to this; in particular it can only appear as the final
required argument in a prototype, and there is no way of the sub
differentiating between an explicitly passed argument and $_.
This caused me problems with Scalar::Does, because I wanted to enable
the "does" function to be called as either:
does($thing, $role);
does($role); # assumes $thing = $_
With "_" in the prototype, $_ was passed to the function at the end of
its argument list; effectively "does($role, $thing)", making it
impossible to tell which argument was the role.
Enter "lexical::underscore" which allows you to access your caller's
lexical $_ variable as easily as:
${lexical::underscore()}
You can access lexical $_ further up the call stack using:
${lexical::underscore($level)}
If you happen to ask for $_ at a level where no lexical $_ is available,
you get the global $_ instead.
This module does work on Perl 5.8 but as there is no lexical $_, always
returns the global $_.
the Perl default variable $_. Certain Perl constructs like the "given"
keyword automatically use a lexical $_ rather than the global $_.
It is occasionallly useful for a sub to be able to access its caller's
$_ variable regardless of whether it was lexical or not. The "(_)" sub
prototype is the official way to do so, however there are sometimes
disadvantages to this; in particular it can only appear as the final
required argument in a prototype, and there is no way of the sub
differentiating between an explicitly passed argument and $_.
This caused me problems with Scalar::Does, because I wanted to enable
the "does" function to be called as either:
does($thing, $role);
does($role); # assumes $thing = $_
With "_" in the prototype, $_ was passed to the function at the end of
its argument list; effectively "does($role, $thing)", making it
impossible to tell which argument was the role.
Enter "lexical::underscore" which allows you to access your caller's
lexical $_ variable as easily as:
${lexical::underscore()}
You can access lexical $_ further up the call stack using:
${lexical::underscore($level)}
If you happen to ask for $_ at a level where no lexical $_ is available,
you get the global $_ instead.
This module does work on Perl 5.8 but as there is no lexical $_, always
returns the global $_.
Media information
Distribution release | Mageia 7 |
Media name | core-release |
Media arch | armv7hl |
Advanced items
Source RPM | NOT IN DATABASE ?! |
Build time | 2018-09-20 17:00:48 |
Changelog | View in Sophie |
Files | View in Sophie |
Dependencies | View in Sophie |