in reply to How to determine if 'strict' is enabled
You can't use %INC.
$ perl -le'no strict; print $INC{ "strict.pm" } ?1:0' 1 # False positive $ perl -le'{ use strict; } print $INC{ "strict.pm" } ?1:0' 1 # False positive $ perl -le'use JSON; print $INC{ "strict.pm" } ?1:0' 1 # False positive $ perl -le'use v5.20; print $INC{ "strict.pm" } ?1:0' 0 # False negative
You can use ( caller(0) )[8] in a sub.
$ perl -le' sub f { ( ( caller(0) )[8] & 0x602 ) == 0x602 } print f ?1:0; ' 0 $ perl -le' sub f { ( ( caller(0) )[8] & 0x602 ) == 0x602 } use strict; print f ?1:0; ' 1 $ perl -le' sub f { ( ( caller(0) )[8] & 0x602 ) == 0x602 } use v5.20; print f ?1:0; ' 1
0x2 is strict refs, 0x200 is strict subs, and 0x400 is strict vars.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: How to determine if 'strict' is enabled
by stevieb (Canon) on Jun 07, 2023 at 05:16 UTC | |
by kcott (Archbishop) on Jun 07, 2023 at 06:15 UTC | |
by LanX (Saint) on Jun 07, 2023 at 11:27 UTC | |
Re^2: How to determine if 'strict' is enabled
by kcott (Archbishop) on Jun 07, 2023 at 04:31 UTC |