use constant REDUCE => ($] >= 5.008009 ? \&List::Util::reduce : \&_reduce);
-our $VERSION = '0.002';
+our $VERSION = '0.004';
sub new {
my $class = shift;
no strict 'refs';
- local(*{$caller."::a"}) = \my $a;
- local(*{$caller."::b"}) = \my $b;
+ local (*{"${caller}::a"}, *{"${caller}::b"}) = (\my $x, \my $y);
- $a = shift;
- foreach (@_) {
- $b = $_;
- $a = &{$code}();
+ $x = shift;
+ foreach my $e (@_) {
+ $y = $e;
+ $x = $code->();
}
- $a;
+ $x;
}
sub _ref { ref $_[0] eq 'ARRAY' || blessed $_[0] && $_[0]->isa(__PACKAGE__) }