Commit | Line | Data |
---|---|---|
cd16c24c IZ |
1 | #!./perl |
2 | ||
3 | BEGIN { | |
78bfd9a9 | 4 | chdir 't' and @INC = '../lib' if $ENV{PERL_CORE}; |
cd16c24c IZ |
5 | } |
6 | ||
2f761939 NC |
7 | my $t = 1; |
8 | print "1..5\n"; | |
9 | sub ok { | |
10 | print "not " unless shift; | |
11 | print "ok $t # ", shift, "\n"; | |
12 | $t++; | |
13 | } | |
cd16c24c IZ |
14 | |
15 | my $v_plus = $] + 1; | |
16 | my $v_minus = $] - 1; | |
17 | ||
2f761939 NC |
18 | unless (eval 'use open ":std"; 1') { |
19 | # pretend that open.pm is present | |
20 | $INC{'open.pm'} = 'open.pm'; | |
21 | eval 'sub open::foo{}'; # Just in case... | |
22 | } | |
23 | ||
cd16c24c IZ |
24 | |
25 | ok( eval "use if ($v_minus > \$]), strict => 'subs'; \${'f'} = 12" eq 12, | |
26 | '"use if" with a false condition, fake pragma'); | |
27 | ||
28 | ok( eval "use if ($v_minus > \$]), strict => 'refs'; \${'f'} = 12" eq 12, | |
29 | '"use if" with a false condition and a pragma'); | |
30 | ||
31 | ok( eval "use if ($v_plus > \$]), strict => 'subs'; \${'f'} = 12" eq 12, | |
32 | '"use if" with a true condition, fake pragma'); | |
33 | ||
34 | ok( (not defined eval "use if ($v_plus > \$]), strict => 'refs'; \${'f'} = 12" | |
35 | and $@ =~ /while "strict refs" in use/), | |
36 | '"use if" with a true condition and a pragma'); | |
37 | ||
2f761939 NC |
38 | # Old version had problems with the module name `open', which is a keyword too |
39 | # Use 'open' =>, since pre-5.6.0 could interpret differently | |
40 | ok( (eval "use if ($v_plus > \$]), 'open' => IN => ':crlf'; 12" || 0) eq 12, | |
41 | '"use if" with open'); |