xref: /openbsd/gnu/usr.bin/perl/lib/strict.t (revision eac174f2)
1#!./perl
2
3chdir 't' if -d 't';
4@INC = ( '.', '../lib' );
5
6our $local_tests = 7;
7require "../t/lib/common.pl";
8
9eval qq(use strict 'garbage');
10like($@, qr/^Unknown 'strict' tag\(s\) 'garbage'/);
11
12eval qq(no strict 'garbage');
13like($@, qr/^Unknown 'strict' tag\(s\) 'garbage'/);
14
15eval qq(use strict qw(foo bar));
16like($@, qr/^Unknown 'strict' tag\(s\) 'foo bar'/);
17
18eval qq(no strict qw(foo bar));
19like($@, qr/^Unknown 'strict' tag\(s\) 'foo bar'/);
20
21{
22    my $warnings = "";
23    local $SIG{__WARN__} = sub { $warnings .= $_[0] };
24    eval 'use v5.12; use v5.10; ${"c"}';
25    is($@, '', 'use v5.10 disables implicit strict refs');
26    like($warnings,
27        qr/^Downgrading a use VERSION declaration to below v5.11 is deprecated, and will become fatal in Perl 5.40 at /,
28        'use v5.10 after use v5.12 provokes deprecation warning');
29}
30
31eval 'use strict; use v5.10; ${"c"}';
32like($@,
33    qr/^Can't use string \("c"\) as a SCALAR ref while "strict refs" in use/,
34    "use v5.10 doesn't disable explicit strict ref");
35