http://qs1969.pair.com?node_id=11152672


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.