1 | #!./perl
|
---|
2 |
|
---|
3 | BEGIN {
|
---|
4 | chdir 't' and @INC = '../lib' if -f 't/TEST';
|
---|
5 | }
|
---|
6 |
|
---|
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 | }
|
---|
14 |
|
---|
15 | my $v_plus = $] + 1;
|
---|
16 | my $v_minus = $] - 1;
|
---|
17 |
|
---|
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 |
|
---|
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 |
|
---|
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');
|
---|