package Carp;
-our $VERSION = '1.07';
+our $VERSION = '1.08';
# this file is an utra-lightweight stub. The first time a function is
# called, Carp::Heavy is loaded, and the real short/longmessmess_jmp
# subs are installed
use Carp qw(carp cluck croak confess);
-plan tests => 36;
+plan tests => 37;
ok 1;
is($?>>8, 42, 'confess() doesn\'t clobber $!');
}
+# undef used to be incorrectly reported as the string "undef"
+sub cluck_undef {
+
+local $SIG{__WARN__} = sub {
+ like $_[0], qr/^Bang! at.+\b(?i:carp\.t) line \d+\n\tmain::cluck_undef\(0, 'undef', 2, undef, 4\) called at.+\b(?i:carp\.t) line \d+$/, "cluck doesn't quote undef" };
+
+cluck "Bang!"
+
+}
+
+cluck_undef (0, "undef", 2, undef, 4);
+
# line 1 "A"
package A;
sub short {
my $arg = shift;
if (ref($arg)) {
$arg = defined($overload::VERSION) ? overload::StrVal($arg) : "$arg";
- }elsif (not defined($arg)) {
- $arg = 'undef';
}
- $arg =~ s/'/\\'/g;
- $arg = str_len_trim($arg, $MaxArgLen);
+ if (defined($arg)) {
+ $arg =~ s/'/\\'/g;
+ $arg = str_len_trim($arg, $MaxArgLen);
- # Quote it?
- $arg = "'$arg'" unless $arg =~ /^-?[\d.]+\z/;
+ # Quote it?
+ $arg = "'$arg'" unless $arg =~ /^-?[\d.]+\z/;
+ } else {
+ $arg = 'undef';
+ }
# The following handling of "control chars" is direct from
# the original code - it is broken on Unicode though.