X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Fstrictures.pm;h=63ce90e2f79700e812073c05e206ff3fb4c39bae;hb=9668cbf1426fdd545095e1e4a691ab9b917a4bb3;hp=f4577f8e5cadc9dab0c4d05b6ad16f29af5a1eba;hpb=96c8649be0383f4beae9c4f9157d59c73ac913a5;p=p5sagit%2Fstrictures.git diff --git a/lib/strictures.pm b/lib/strictures.pm index f4577f8..63ce90e 100644 --- a/lib/strictures.pm +++ b/lib/strictures.pm @@ -7,27 +7,25 @@ BEGIN { *_PERL_LT_5_8_4 = ($] < 5.008004) ? sub(){1} : sub(){0}; } -our $VERSION = '1.004004'; # 1.4.4 +our $VERSION = '1.005006'; +$VERSION = eval $VERSION; sub VERSION { - for ($_[1]) { + my ($class, $version) = @_; + for ($version) { last unless defined && !ref && int != 1; die "Major version specified as $_ - this is strictures version 1"; } - # disable this since Foo->VERSION(undef) correctly returns the version - # and that can happen either if our caller passes undef explicitly or - # because the for above autovivified $_[1] - I could make it stop but - # it's pointless since we don't want to blow up if the caller does - # something valid either. + # passing undef here may either warn or die depending on the version of perl. + # we can't match the caller's warning state in this case, so just disable the + # warning. no warnings 'uninitialized'; shift->SUPER::VERSION(@_); } our $extra_load_states; -our $Smells_Like_VCS = (-e '.git' || -e '.svn' || -e '.hg' - || (-e '../../dist.ini' - && (-e '../../.git' || -e '../../.svn' || -e '../../.hg' ))); +our $Smells_Like_VCS; sub import { strict->import; @@ -41,8 +39,13 @@ sub import { } $ENV{PERL_STRICTURES_EXTRA}; } elsif (! _PERL_LT_5_8_4) { - !!((caller)[1] =~ /^(?:t|xt|lib|blib)/ - and $Smells_Like_VCS) + (caller)[1] =~ /^(?:t|xt|lib|blib)[\\\/]/ + and defined $Smells_Like_VCS ? $Smells_Like_VCS + : ( $Smells_Like_VCS = !!( + -e '.git' || -e '.svn' || -e '.hg' + || (-e '../../dist.ini' + && (-e '../../.git' || -e '../../.svn' || -e '../../.hg' )) + )) } }; if ($extra_tests) { @@ -105,7 +108,7 @@ is equivalent to except when called from a file which matches: - (caller)[1] =~ /^(?:t|xt|lib|blib)/ + (caller)[1] =~ /^(?:t|xt|lib|blib)[\\\/]/ and when either C<.git>, C<.svn>, or C<.hg> is present in the current directory (with the intention of only forcing extra tests on the author side) -- or when C<.git>,