X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2Fsubs%2Fauto.pm;h=e507c5c71aafed9d24140a8a8528a13796ec91b1;hb=205e44441b8719e69e65284d4d7c44e2627c485f;hp=d93706aa5f632e6e9137f90f5220924ce39426f7;hpb=64760329f8a4af897da0b98bc7b9359690e35e9b;p=perl%2Fmodules%2Fsubs-auto.git diff --git a/lib/subs/auto.pm b/lib/subs/auto.pm index d93706a..e507c5c 100644 --- a/lib/subs/auto.pm +++ b/lib/subs/auto.pm @@ -16,11 +16,11 @@ subs::auto - Read barewords as subroutine names. =head1 VERSION -Version 0.02 +Version 0.04 =cut -our $VERSION = '0.02'; +our $VERSION = '0.04'; =head1 SYNOPSIS @@ -35,7 +35,7 @@ our $VERSION = '0.02'; foo->meth; # "'foo'->meth" if you have use'd foo somewhere, # or "foo()->meth" otherwise print foo 'wut'; # print to the filehandle foo if it's actually one, - # or "foo()->print('wut')" otherwise + # or "print(foo('wut'))" otherwise } # ... but function calls will fail at run-time if you don't # actually define foo somewhere @@ -43,7 +43,7 @@ our $VERSION = '0.02'; =head1 DESCRIPTION -This pragma lexically enables the parsing of any bareword as a subroutine name, except those which corresponds to an entry in C<%INC> (expected to be class names) or whose symbol table entry has a IO slot (expected to be filehandles). +This pragma lexically enables the parsing of any bareword as a subroutine name, except those which corresponds to an entry in C<%INC> (expected to be class names) or whose symbol table entry has an IO slot (expected to be filehandles). You can pass options to C as key / value pairs : @@ -57,6 +57,8 @@ Specifies on which package the pragma should act. Setting C<$pkg> to C a source filter. + =cut BEGIN { @@ -120,7 +122,7 @@ sub _reset { sub _fetch { (undef, my $data, my $func) = @_; return if $data->{guard} or $func =~ /::/ or exists $core{$func}; - $data->{guard} = 1; + local $data->{guard} = 1; my $hints = (caller 0)[10]; if ($hints and $hints->{subs__auto}) { my $mod = $func . '.pm'; @@ -140,20 +142,18 @@ sub _fetch { } else { _reset($data->{pkg}, $func); } - $data->{guard} = 0; return; } sub _store { (undef, my $data, my $func) = @_; return if $data->{guard}; - $data->{guard} = 1; + local $data->{guard} = 1; _reset($data->{pkg}, $func); - $data->{guard} = 0; return; } -my $wiz = wizard data => sub { +{ pkg => $_[1] } }, +my $wiz = wizard data => sub { +{ pkg => $_[1], guard => 0 } }, fetch => \&_fetch, store => \&_store; @@ -216,7 +216,7 @@ L with C magic enabled (this should be assured by the req Vincent Pit, C<< >>, L. -You can contact me by mail or on #perl @ FreeNode (vincent or Prof_Vince). +You can contact me by mail or on C (vincent). =head1 BUGS