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";
# not checked, so error raises an exception
close FH;
+=head1 BUGS
+
+You should not fatalize functions that are called in list context, because this
+module tests whether a function has failed by testing the boolean truth of its
+return value in scalar context.
+
=head1 AUTHOR
Lionel Cons (CERN).