use if $] < 5.012, 'Enumerators';
Prepending scripts with nine lines of code is not what I was hoping for.
That's because you're trying to write your code inside out. A less messy approach would be to include Enumerators unconditionally, and let it decide if it needs to override each or not. It's not a detail the module's user should worry about.
# use Enumerators -global;
# use Enumerators qw( each );
# use Enumerators;
package Enumerators;
use Exporter qw( );
our @EXPORT = qw( each );
our @EXPORT_OK = qw( each );
sub import {
my $class = shift;
return if $[ >= 5.012;
if ($_[0] eq '-global') {
*CORE::GLOBAL::each = \&each;
} else {
goto &Exporter::import;
}
}
sub each(\[@%]) {
...
}
1;
(Trim out what you don't want.)
Note that this approach works for pragams too.
package stricter;
sub import {
require strict;
strict->import;
require warnings;
warnings->import;
}
1;
use stricter; does the same as use strict; use warnings; |