X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Fstrictures.pm;h=64d4ba2ed0666e2e5bba605a21d0971ed4464d88;hb=cf342065e3ce9c25aa15281e7ba4a6fbe3f26925;hp=e5537744be02300fecff884ffba2abb404568f32;hpb=d48424bd79f5b9a50b5bc5059a0f6ab34b608bf0;p=p5sagit%2Fstrictures.git diff --git a/lib/strictures.pm b/lib/strictures.pm index e553774..64d4ba2 100644 --- a/lib/strictures.pm +++ b/lib/strictures.pm @@ -5,18 +5,24 @@ use warnings FATAL => 'all'; BEGIN { *_PERL_LT_5_8_4 = ($] < 5.008004) ? sub(){1} : sub(){0}; + # goto &UNIVERSAL::VERSION usually works on 5.8, but fails on some ARM + # machines. Seems to always work on 5.10 though. + *_CAN_GOTO_VERSION = ($] >= 5.010000) ? sub(){1} : sub(){0}; } -our $VERSION = '2.000000'; +our $VERSION = '2.000004'; $VERSION = eval $VERSION; our @WARNING_CATEGORIES = grep { exists $warnings::Offsets{$_} } qw( closure + chmod deprecated exiting experimental experimental::autoderef + experimental::bitwise experimental::const_attr + experimental::declared_refs experimental::lexical_subs experimental::lexical_topic experimental::postderef @@ -70,6 +76,7 @@ our @WARNING_CATEGORIES = grep { exists $warnings::Offsets{$_} } qw( taint threads uninitialized + umask unpack untie utf8 @@ -82,14 +89,16 @@ our @WARNING_CATEGORIES = grep { exists $warnings::Offsets{$_} } qw( ); sub VERSION { - no warnings; - local $@; - if (defined $_[1] && eval { $_[0]->UNIVERSAL::VERSION($_[1]); 1}) { - $^H |= 0x20000 - unless _PERL_LT_5_8_4; - $^H{strictures_enable} = int $_[1]; + { + no warnings; + local $@; + if (defined $_[1] && eval { &UNIVERSAL::VERSION; 1}) { + $^H |= 0x20000 + unless _PERL_LT_5_8_4; + $^H{strictures_enable} = int $_[1]; + } } - goto &UNIVERSAL::VERSION; + _CAN_GOTO_VERSION ? goto &UNIVERSAL::VERSION : &UNIVERSAL::VERSION; } our %extra_load_states; @@ -98,7 +107,7 @@ our $Smells_Like_VCS; sub import { my $class = shift; - my %opts = ref $_[0] ? %{$_[0]} : @_; + my %opts = @_ == 1 ? %{$_[0]} : @_; if (!exists $opts{version}) { $opts{version} = exists $^H{strictures_enable} ? delete $^H{strictures_enable} @@ -192,9 +201,9 @@ sub _want_extra { and $file =~ /^(?:t|xt|lib|blib)[\\\/]/ and defined $Smells_Like_VCS ? $Smells_Like_VCS : ( $Smells_Like_VCS = !!( - -e '.git' || -e '.svn' || -e '.hg' + -e '.git' || -e '.svn' || -e '.hg' || -e '.bzr' || (-e '../../dist.ini' - && (-e '../../.git' || -e '../../.svn' || -e '../../.hg' )) + && (-e '../../.git' || -e '../../.svn' || -e '../../.hg' || -e '../../.bzr' )) )) ); } @@ -238,7 +247,7 @@ EOE __END__ =head1 NAME -strictures - turn on strict and make all warnings fatal +strictures - turn on strict and make most warnings fatal =head1 SYNOPSIS @@ -264,12 +273,12 @@ except when called from a file which matches: (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>, C<.svn>, or C<.hg> is present two directories up along with -C (which would indicate we are in a C operation, via -L) -- or when the C environment variable is -set, in which case it also does the equivalent of +and when either C<.git>, C<.svn>, C<.hg>, or C<.bzr> is present in the current +directory (with the intention of only forcing extra tests on the author side) +-- or when C<.git>, C<.svn>, C<.hg>, or C<.bzr> is present two directories up +along with C (which would indicate we are in a C operation, +via L) -- or when the C environment variable +is set, in which case it also does the equivalent of no indirect 'fatal'; no multidimensional;