gpt4 book ai didi

perl - 如何获取 coderef 的行号和文件名?

转载 作者:行者123 更新时间:2023-12-05 00:48:36 24 4
gpt4 key购买 nike

假设我有一些库代码,与此完全不同:

sub try_hard {
my $sub = shift;
my $tries = 3;
my @failures;
while($tries--) {
eval {
my $success = $sub->(@_) or die "sub returned false value";
1;
} or do {
push @failures, $@;
}
}
die "try_hard: failed 3 times: $failures[-1]"
}

这可能会像这样失败:
try_hard: failed 3 times: sub returned false value at BadUtils.pm line 7 

...如果你调用 try_hard 就没有用了在许多地方,您不知道哪个调用是软失败的调用。

如果我能得到 $sub 的来源,我可以将 die 更改为:
  my $success = $sub->(@_) or die "sub returned false value at $file line $lineno
";

图书馆会稍微 DWIMmer。有可能实现这一目标吗?

最佳答案

使用croak而不是 die .您可以通过使用启动脚本来强制回溯

perl -MCarp::Always script

或者
PERL5OPT=-MCarp::Always script

关于perl - 如何获取 coderef 的行号和文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49490339/

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