What I said about keys applies to values and each as well. It's not a backward incompatible change, so no feature needs to be activated. Your code boils down to
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;
In reply to Re^3: Howto "use" backward compability packages of new "feature"s
by ikegami
in thread Howto "use" backward compability packages of new "feature"s
by LanX
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |