X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2Findirect.git;a=blobdiff_plain;f=lib%2Findirect.pm;h=6cdf32af8d871ccb9999d67d7ddc5836c4acb3c3;hp=34920db30092002a79bbf1a6b8282c91b0f8612d;hb=d271dc28cd63dc9d2f3e95b3ffc377bdae0026a8;hpb=2635de8af7a889878b35ebed184d2f7b3c9c4ac0 diff --git a/lib/indirect.pm b/lib/indirect.pm index 34920db..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.18 +Version 0.21 =cut our $VERSION; BEGIN { - $VERSION = '0.18'; + $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.