1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
use warnings;
use strict;
use Test::More tests => 8;
our @x = (100, 200);
@x = @x;
sub foo ($) { $_[0]+1 }
our @values;
@values = ();
eval q{
push @values, foo @x, 20;
push @values, foo(@x);
};
is $@, "";
is_deeply \@values, [ 3, 20, 3 ];
@values = ();
eval q{
no Lexical::Var '&foo';
push @values, foo @x, 20;
push @values, foo(@x);
};
is $@, "";
is_deeply \@values, [ 3, 20, 3 ];
@values = ();
eval q{
use Lexical::Var '&foo' => sub { 1 };
no Lexical::Var '&foo';
push @values, foo @x, 20;
push @values, foo(@x);
};
is $@, "";
is_deeply \@values, [ 3, 20, 3 ];
SKIP: { skip "\"my sub\" unavailable", 2 if "$]" < 5.017004;
@values = ();
eval q{
no warnings "$]" >= 5.017005 ? "experimental::lexical_subs" :
"experimental";
use feature "lexical_subs";
my sub foo { 1 }
no Lexical::Var '&foo';
push @values, foo @x, 20;
push @values, foo(@x);
};
if("$]" < 5.019001) {
like $@, qr/\Acan't shadow core lexical subroutine/;
ok 1;
} else {
is $@, "";
is_deeply \@values, [ 3, 20, 3 ];
}
}
1;
|