in reply to Re^2: Howto "use" backward compability packages of new "feature"s
in thread Howto "use" backward compability packages of new "feature"s
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;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Howto "use" backward compability packages of new "feature"s
by LanX (Saint) on Aug 23, 2010 at 14:40 UTC | |
by ikegami (Patriarch) on Aug 23, 2010 at 23:46 UTC | |
by LanX (Saint) on Aug 24, 2010 at 02:04 UTC | |
by ikegami (Patriarch) on Aug 25, 2010 at 01:24 UTC | |
by LanX (Saint) on Aug 25, 2010 at 09:38 UTC | |
| |
by JavaFan (Canon) on Aug 25, 2010 at 09:52 UTC | |
by LanX (Saint) on Aug 25, 2010 at 11:19 UTC |