diff options
author | Jesse Glick <jesse@ginger> | 1997-01-03 11:18:01 +1200 |
---|---|---|
committer | Chip Salzenberg <chip@atlantic.net> | 1997-04-27 00:00:00 +1200 |
commit | c76750589503afb0145298a66c155795ba686e77 (patch) | |
tree | 534a1112fa8efb760f4ff21f51e8abf4ea333fda /lib/SelfLoader.pm | |
parent | d3ef3b8a4f656692c6e533ff21ee112d547c4519 (diff) | |
download | perl-c76750589503afb0145298a66c155795ba686e77.tar.gz |
SelfLoader: fix prototype pattern, rename intrusive lexical
Signed-off-by: Jesse Glick <jesse@ginger>
Diffstat (limited to 'lib/SelfLoader.pm')
-rw-r--r-- | lib/SelfLoader.pm | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/lib/SelfLoader.pm b/lib/SelfLoader.pm index 8d80b575a1..f93841c862 100644 --- a/lib/SelfLoader.pm +++ b/lib/SelfLoader.pm @@ -3,25 +3,26 @@ use Carp; require Exporter; @ISA = qw(Exporter); @EXPORT = qw(AUTOLOAD); -$VERSION = 1.06; sub Version {$VERSION} +$VERSION = 1.07; sub Version {$VERSION} $DEBUG = 0; my %Cache; # private cache for all SelfLoader's client packages AUTOLOAD { print STDERR "SelfLoader::AUTOLOAD for $AUTOLOAD\n" if $DEBUG; - my $code = $Cache{$AUTOLOAD}; - unless ($code) { + my $SL_code = $Cache{$AUTOLOAD}; + unless ($SL_code) { # Maybe this pack had stubs before __DATA__, and never initialized. # Or, this maybe an automatic DESTROY method call when none exists. $AUTOLOAD =~ m/^(.*)::/; SelfLoader->_load_stubs($1) unless exists $Cache{"${1}::<DATA"}; - $code = $Cache{$AUTOLOAD}; - $code = "sub $AUTOLOAD { }" if (!$code and $AUTOLOAD =~ m/::DESTROY$/); - croak "Undefined subroutine $AUTOLOAD" unless $code; + $SL_code = $Cache{$AUTOLOAD}; + $SL_code = "sub $AUTOLOAD { }" + if (!$SL_code and $AUTOLOAD =~ m/::DESTROY$/); + croak "Undefined subroutine $AUTOLOAD" unless $SL_code; } - print STDERR "SelfLoader::AUTOLOAD eval: $code\n" if $DEBUG; - eval $code; + print STDERR "SelfLoader::AUTOLOAD eval: $SL_code\n" if $DEBUG; + eval $SL_code; if ($@) { $@ =~ s/ at .*\n//; croak $@; @@ -45,7 +46,7 @@ sub _load_stubs { $Cache{"${currpack}::<DATA"} = 1; # indicate package is cached while(defined($line = <$fh>) and $line !~ m/^__END__/) { - if ($line =~ m/^sub\s+([\w:]+)\s*(\([\$\@\;\%\\]*\))?/) { # A sub declared + if ($line =~ m/^sub\s+([\w:]+)\s*(\([\\\$\@\%\&\*\;]*\))?/) { push(@stubs, $self->_add_to_cache($name, $currpack, \@lines, $protoype)); $protoype = $2; @lines = ($line); |