Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: How to lose Carp levels with @CARP_NOT?

by tilly (Archbishop)
on Jan 29, 2004 at 16:23 UTC ( #324952=note: print w/ replies, xml ) Need Help??


in reply to How to lose Carp levels with @CARP_NOT?

There are multiple solutions.

First of all, I should point out that normally you don't want to do this. If you want a short message, then croak. If you want to provide full debugging information, there is little reason not to provide a little extra. And there is usually good reason not to, because when an error is thrown it can be useful for the developer to have the option of seeing the actual code that decides to throw the message. (Just to trace what has to be fixed.)

Now one solution is the old internal style. If you want to exclude 4 levels of call exactly, you can play games with $Carp::CarpLevel. Unfortunately whenever one person plays games with that, they break it for everyone else. Also its usage with shortmess messages is obscure at best. Furthermore that gets you into the game of counting how many levels of your module you use.

The more robust solution is the new internal style. Just stick the line: $Carp::Internal{$_}++ for 'Log::Dispatch::Output', 'Log::Dispatch'; in your module. And now those two packages will be ignored whenever Carp crawls back, looking for where to start reporting the error from.


Comment on Re: How to lose Carp levels with @CARP_NOT?
Download Code
Re: Re: How to lose Carp levels with @CARP_NOT?
by liz (Monsignor) on Jan 29, 2004 at 16:52 UTC
    The more robust solution is the new internal style. Just stick the line: $Carp::Internal{$_}++ for 'Log::Dispatch::Output', 'Log::Dispatch'; in your module. And now those two packages will be ignored whenever Carp crawls back, looking for where to start reporting the error from.

    How will you know whether a Carp.pm supports this? Check if the %Carp::Internal hash exists already? Or is there some version number check that I can use?

    Liz

      %Carp::Internal was introduced in Perl 5.8. $Carp::CarpLevel was available before that, but was always a bad idea. If you want, you can read a rant or two on why I dislike it.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://324952]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (5)
As of 2014-07-30 22:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (241 votes), past polls