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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |