X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2Findirect.pm;h=4484dae086a7af00d0d8accc3ce0cbd9ac8418a7;hb=a6e7df84c1196a8c6d12692a06d913a24c5d530a;hp=23bc7a27ff2bf04cbfc040fee53e847da073d30b;hpb=ffda539e3218e407f703f465fa472a769693ac10;p=perl%2Fmodules%2Findirect.git diff --git a/lib/indirect.pm b/lib/indirect.pm index 23bc7a2..4484dae 100644 --- a/lib/indirect.pm +++ b/lib/indirect.pm @@ -11,13 +11,13 @@ indirect - Lexically warn about using the indirect object syntax. =head1 VERSION -Version 0.08 +Version 0.11 =cut our $VERSION; BEGIN { - $VERSION = '0.08'; + $VERSION = '0.11'; } =head1 SYNOPSIS @@ -57,27 +57,40 @@ BEGIN { } sub import { - $^H{indirect} = undef; + $^H{+(__PACKAGE__)} = undef; + (); } +my $msg = sub { "Indirect call of method \"$_[1]\" on object \"$_[0]\"" }; + sub unimport { (undef, my $type) = @_; $^H |= 0x00020000; - $^H{indirect} = (defined $type and $type eq ':fatal') ? 2 : 1; + my $cb = (defined $type and $type eq ':fatal') + ? sub { die $msg->(@_) } + : sub { warn $msg->(@_) }; + $^H{+(__PACKAGE__)} = _tag($cb); + (); } -=head1 DEPENDENCIES +=head1 CONSTANTS -L 5.8. +=head2 C -L (standard since perl 5.006). +True iff the module could have been built when thread-safety features. =head1 CAVEATS C (no semicolon) at the end of a file won't be seen as an indirect object syntax, although it will as soon as there is another token before the end (as in C or C). With 5.8 perls, the pragma does not propagate into C. -This is due to a shortcoming in the way perl handles the hints hash, and is fixed in perl 5.10. +This is due to a shortcoming in the way perl handles the hints hash, which is addressed in perl 5.10. + +=head1 DEPENDENCIES + +L 5.8. + +L (standard since perl 5.006). =head1 AUTHOR @@ -103,7 +116,7 @@ Bram, for motivation and advices. =head1 COPYRIGHT & LICENSE -Copyright 2008 Vincent Pit, all rights reserved. +Copyright 2008-2009 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.