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.