X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2Findirect.pm;h=4484dae086a7af00d0d8accc3ce0cbd9ac8418a7;hb=a6e7df84c1196a8c6d12692a06d913a24c5d530a;hp=67ef542c347691776ba8b118cd514b19293c6908;hpb=63332507705bd3614900bdcacb6f0265dc91a9de;p=perl%2Fmodules%2Findirect.git diff --git a/lib/indirect.pm b/lib/indirect.pm index 67ef542..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.09_01 +Version 0.11 =cut our $VERSION; BEGIN { - $VERSION = '0.09_01'; + $VERSION = '0.11'; } =head1 SYNOPSIS @@ -57,15 +57,28 @@ 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 CONSTANTS + +=head2 C + +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).