X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2Findirect.git;a=blobdiff_plain;f=lib%2Findirect.pm;h=6cdf32af8d871ccb9999d67d7ddc5836c4acb3c3;hp=96ff670451cfdb73751bf28cb2a6adc0e5339ab4;hb=d271dc28cd63dc9d2f3e95b3ffc377bdae0026a8;hpb=8a6edfe3e713d47f83fcee92125f992769c67884 diff --git a/lib/indirect.pm b/lib/indirect.pm index 96ff670..6cdf32a 100644 --- a/lib/indirect.pm +++ b/lib/indirect.pm @@ -1,6 +1,6 @@ package indirect; -use 5.008; +use 5.008001; use strict; use warnings; @@ -11,13 +11,13 @@ indirect - Lexically warn about using the indirect object syntax. =head1 VERSION -Version 0.19 +Version 0.21 =cut our $VERSION; BEGIN { - $VERSION = '0.19'; + $VERSION = '0.21'; } =head1 SYNOPSIS @@ -35,7 +35,7 @@ BEGIN { } try { ... }; # warns - no indirect ':fatal'; + no indirect ':fatal'; # or 'FATAL', or ':Fatal' ... if (defied $foo) { ... } # croaks, note the typo # From the command-line @@ -48,7 +48,9 @@ BEGIN { =head1 DESCRIPTION When enabled (or disabled as some may prefer to say, since you actually turn it on by calling C), this pragma warns about indirect object syntax constructs that may have slipped into your code. + This syntax is now considered harmful, since its parsing has many quirks and its use is error prone (when C isn't defined, C actually compiles to C<< $x->swoosh >>). +In L, Matt S. Trout gives an example of an indirect construct that can cause a particularly bewildering error. It currently does not warn for core functions (C, C, C or C). This may change in the future, or may be added as optional features that would be enabled by passing options to C. @@ -70,7 +72,7 @@ BEGIN { =head1 METHODS -=head2 C<< unimport [ hook => $hook | ':fatal' ] >> +=head2 C<< unimport [ hook => $hook | ':fatal', 'FATAL', ... ] >> Magically called when C is encountered. Turns the module on. @@ -80,7 +82,7 @@ The policy to apply depends on what is first found in C<@opts> : =item * -If it's the string C<':fatal'>, the compilation will croak on the first indirect syntax met. +If it is a string that matches C, the compilation will croak on the first indirect syntax met. =item * @@ -103,7 +105,7 @@ sub unimport { my $arg = shift; if ($arg eq 'hook') { $hook = shift; - } elsif ($arg eq ':fatal') { + } elsif ($arg =~ /^:?fatal$/i) { $hook = sub { die msg(@_) }; } last if $hook; @@ -189,7 +191,7 @@ Hence C will be caught. =head1 DEPENDENCIES -L 5.8. +L 5.8.1. L (standard since perl 5.006). @@ -220,7 +222,7 @@ Andrew Main and Florian Ragwitz, for testing on real-life code and reporting iss =head1 COPYRIGHT & LICENSE -Copyright 2008-2009 Vincent Pit, all rights reserved. +Copyright 2008,2009,2010 Vincent Pit, all rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.