How can I replace all 'die's with 'confess' in a Perl application?

后端 未结 4 1310
迷失自我
迷失自我 2021-02-02 13:56

I\'m working in a large Perl application and would like to get stack traces every time \'die\' is called. I\'m aware of the Carp module, but I would prefer not to search/replace

4条回答
  •  南方客
    南方客 (楼主)
    2021-02-02 14:41

    I usually only want to replace the dies in a bit of code, so I localize the __DIE__ handler:

     {
     use Carp;
     local $SIG{__DIE__} = \&Carp::confess;
    
     ....
     }
    

    As a development tool this can work, but some modules play tricks with this to get their features to work. Those features may break in odd ways when you override the handler they were expecting. It's not a good practice, but it happens sometimes.

提交回复
热议问题