summaryrefslogtreecommitdiff
path: root/lib/SelfLoader.pm
diff options
context:
space:
mode:
authorJesse Glick <jesse@ginger>1997-01-03 11:18:01 +1200
committerChip Salzenberg <chip@atlantic.net>1997-04-27 00:00:00 +1200
commitc76750589503afb0145298a66c155795ba686e77 (patch)
tree534a1112fa8efb760f4ff21f51e8abf4ea333fda /lib/SelfLoader.pm
parentd3ef3b8a4f656692c6e533ff21ee112d547c4519 (diff)
downloadperl-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.pm19
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);