Carp -- shortmess and longmess

H

Haakon Riiser

perldoc Carp says:

carp - warn of errors (from perspective of caller)
cluck - warn of errors with stack backtrace
(not exported by default)
croak - die of errors (from perspective of caller)
confess - die of errors with stack backtrace
shortmess - return the message that carp and croak produce
longmess - return the message that cluck and confess produce

but this is not how it appears to work. I created a test program
based on the examples in the manual:

--- begin carp.pl ---
use Carp qw(croak cluck);

sub foo {
cluck "This is how we got here!";
print Carp::shortmess("This will have caller's details added");
print Carp::longmess("This will have stack backtrace added");
croak "We're outta here!";
}

sub bar {
foo();
}

bar();
--- end carp.pl ---

When I run this program, I get the following output:

This is how we got here! at carp.pl line 4
main::foo() called at carp.pl line 11
main::bar() called at carp.pl line 14
This will have caller's details added at carp.pl line 5
main::foo() called at carp.pl line 11
main::bar() called at carp.pl line 14
This will have stack backtrace added at carp.pl line 11
main::bar() called at carp.pl line 14
We're outta here! at carp.pl line 7
main::foo() called at carp.pl line 11
main::bar() called at carp.pl line 14

The message from cluck seems to be OK -- it prints the backtrace,
as it should. The next two, shortmess and longmess, appear
to do the opposite of what they should. shortmess prints the
longest message, backtrace and everything, while longmess only
prints the bottom of the stack. It should've been the other
way around, right? croak also prints the full backtrace, which,
if I understand the manual correctly, is incorrect.

In summary: carp, cluck, croak and confess all print the full
backtrace (same as shortmess), and the longmess message is
never used.

Verified on the following systems:

Custom built Perl 5.8.4 (-Duse64bitint -des), Caro 1.02
Custom built Perl 5.8.5 (-Duse64bitint -des), Carp 1.03
Slackware 10's Perl 5.8.4, Carp 1.02
Red Hat Enterprise Linux WS release 3's Perl 5.8.4, Carp 1.02

Is this a known bug, or should I report it with perlbug?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,902
Latest member
Elena68X5

Latest Threads

Top