use strict;
our($AUTOLOAD, $Debug, $VERSION);
-$VERSION = 1.04;
+$VERSION = 1.06;
$Debug = 0 unless defined $Debug;
$n++;
push(@out1,[$n,@out]) if $seen_semi;
push(@out, $1 . "{\$_[$n]}"), next if $proto =~ s/^\s*\\([\@%\$\&])//;
- push(@out, "\$_[$n]"), next if $proto =~ s/^\s*([*\$&])//;
+ push(@out, "\$_[$n]"), next if $proto =~ s/^\s*([_*\$&])//;
push(@out, "\@_[$n..\$#_]"), last if $proto =~ s/^\s*(;\s*)?\@//;
$seen_semi = 1, $n--, next if $proto =~ s/^\s*;//; # XXXX ????
die "Unknown prototype letters: \"$proto\"";
$sref = \&$sub;
$proto = prototype $sref;
$call = '&$sref';
- } elsif ($sub eq $ini) { # Stray user subroutine
+ } elsif ($sub eq $ini && $sub !~ /^CORE::GLOBAL::/) {
+ # Stray user subroutine
die "$sub is not a Perl subroutine"
} else { # CORE subroutine
$proto = eval { prototype "CORE::$name" };
die "$name is neither a builtin, nor a Perl subroutine"
if $@;
- die "Cannot make a non-overridable builtin fatal"
+ die "Cannot make the non-overridable builtin $name fatal"
if not defined $proto;
$core = 1;
$call = "CORE::$name";