Name : perl-lexical-underscore
| |
Version : 0.004
| Vendor : obs://build_opensuse_org/devel:languages:perl
|
Release : lp154.1.1
| Date : 2023-01-27 17:31:07
|
Group : Development/Libraries/Perl
| Source RPM : perl-lexical-underscore-0.004-lp154.1.1.src.rpm
|
Size : 0.03 MB
| |
Packager : https://www_suse_com/
| |
Summary : access your caller\'s lexical underscore
|
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 \'$_\'.
|
RPM found in directory: /packages/linux-pbone/ftp5.gwdg.de/pub/opensuse/repositories/devel:/languages:/perl:/CPAN-L/15.4/noarch |