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.
In reply to Re: How to determine if 'strict' is enabled
by ikegami
in thread How to determine if 'strict' is enabled
by kcott
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |