加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 如何用Carp将呼叫标记为“不安全”?

发布时间:2020-12-15 22:06:55 所属栏目:大数据 来源:网络整理
导读:我遇到了与 Can’t disable stack trace in Carp::croak() for some reason相同的问题.因为堆栈中的每个调用都被认为是“安全的”,所以croak()每次打印出一个完整的堆栈跟踪.我想为某些电话禁用它. 这是一个例子: use Carp;sub this_may_fail { # Some code
我遇到了与 Can’t disable stack trace in Carp::croak() for some reason相同的问题.因为堆栈中的每个调用都被认为是“安全的”,所以croak()每次打印出一个完整的堆栈跟踪.我想为某些电话禁用它.

这是一个例子:

use Carp;

sub this_may_fail {
  # Some code...
  croak "This call failed!";
}

sub regular_code {
  this_may_fail();
}

regular_code();

两个子例程都在同一个包中,因此this_may_fail会自动标记为安全.有没有办法告诉Carp这个_may_fail应该被视为不安全?

解决方法

这是由this_may_fail认为“安全”的regular_code.检查基于命名空间,因此为了使其不安全,您可以将this_may_fail放在不同的命名空间中.

或者写下你自己的黄花鱼.

perl -e'
   use Carp qw( );
   sub untrusting_croak {
      goto &Carp::croak if $Carp::Verbose;
      my @caller = caller(1);
      die(join("",@_)." at $caller[1] line $caller[2]n");
   }

   sub f { untrusting_croak("!!!"); }    # Line 9

   f();                                  # Line 11
'
!!! at -e line 11

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读