use constant _PERL_LT_5_8_4 => ($] < 5.008004) ? 1 : 0;
-our $VERSION = '1.004002'; # 1.4.2
+our $VERSION = '1.004004'; # 1.4.4
sub VERSION {
for ($_[1]) {
shift->SUPER::VERSION(@_);
}
-my $extra_load_states;
+our $extra_load_states;
our $Smells_Like_VCS = (-e '.git' || -e '.svn'
|| (-e '../../dist.ini' && (-e '../../.git' || -e '../../.svn')));
strict->import;
warnings->import(FATAL => 'all');
+ my $caller_file;
+ my $depth = 0;
+ while (my @caller = caller(++$depth)) {
+ if ($caller[3] =~ /::BEGIN$/) {
+ # older perls report the BEGIN in the wrong file
+ $caller_file = $depth > 1 ? (caller($depth-1))[1] : $caller[1];
+ $caller_file = $caller[1];
+ }
+ }
+
my $extra_tests = do {
if (exists $ENV{PERL_STRICTURES_EXTRA}) {
if (_PERL_LT_5_8_4 and $ENV{PERL_STRICTURES_EXTRA}) {
}
$ENV{PERL_STRICTURES_EXTRA};
} elsif (! _PERL_LT_5_8_4) {
- !!((caller)[1] =~ /^(?:t|xt|lib|blib)/
+ !!($caller_file =~ /^(?:t|xt|lib|blib)/
and $Smells_Like_VCS)
}
};
$extra_load_states ||= do {
my (%rv, @failed);
- for my $mod (qw(indirect multidimensional bareword::filehandles)) {
+ foreach my $mod (qw(indirect multidimensional bareword::filehandles)) {
eval "require $mod; \$rv{'$mod'} = 1;" or do {
push @failed, $mod;
# courtesy of the 5.8 require bug
- $mod =~ s|::|/|g;
- delete $INC{"$mod.pm"};
+ # (we do a copy because 5.16.2 at least uses the same read-only
+ # scalars for the qw() list and it doesn't seem worth a $^V check)
+
+ (my $file = $mod) =~ s|::|/|g;
+ delete $INC{"${file}.pm"};
};
}