gpt4 book ai didi

perl - 如果 AUTOLOAD 失败,则传递错误消息

转载 作者:行者123 更新时间:2023-12-04 23:48:38 25 4
gpt4 key购买 nike

我正在使用 AUTOLOAD处理对一些未定义子程序的调用。

sub AUTOLOAD {
my $member = $AUTOLOAD;
# ... do something if knowing how to handle '$member'

# otherwise ?
}

当在包上调用一个不存在的子程序(比如 my_method )时,Perl 通常会说类似

Can't locate object method "my_method" via package "MyPackage" 
at Package.pm line 99.

我希望 Perl 显示此标准消息,以防我不知道如何处理对子例程的调用 $member在我的 AUTOLOAD 实现中.

我怎样才能做到这一点?

我没有发现可能包含适当消息的特殊变量。还有 Perl documentation on Autoloading没有提示这个问题。

备注:我想避免重写错误消息,而是使用 Perl 提供的标准消息。

最佳答案

不,该消息在任何地方都不可用。但是您可以使用 Carp 添加适当的行和文件:

sub AUTOLOAD {
our $AUTOLOAD;
my ($package,$method) = $AUTOLOAD=~/^(.*)::(.*)/s;
use Carp ();
local $Carp::CarpLevel = 1;
Carp::croak( qq!Can't locate object method "$method" via package "$package"! );
}

关于perl - 如果 AUTOLOAD 失败,则传递错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28071025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com