Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Perl > Perl Misc > Carp -- shortmess and longmess

Reply
Thread Tools

Carp -- shortmess and longmess

 
 
Haakon Riiser
Guest
Posts: n/a
 
      07-26-2004
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?

--
Haakon
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Why Carp::croak over die? Irving Kimura Perl Misc 3 05-14-2004 01:54 AM
CGI::Carp and "useless quotes" Gunnar Hjalmarsson Perl Misc 12 04-16-2004 08:42 PM
Can't locate Carp/Heavy.pm ? please help! joe Perl Misc 2 04-10-2004 07:08 PM
$SIG{__DIE__} doesn't make sense when using CGI::Carp Jo Oberman Perl Misc 5 09-14-2003 02:21 PM
Problem with Date::Manip, taint mode, and CGI::Carp. Louis Erickson Perl Misc 2 09-03-2003 02:02 AM



Advertisments