我正在移动一些代码而忽略了使用Try :: Tiny'在一段代码上。当我运行它时,perl会运行两个代码块,因此捕获会触发,幸运的是让我看到错误。似乎try和catch被用作标签。我以为标签后面需要一个冒号?为什么没有人抓住这个?
这里是代码:
#!/grid/common/bin/perl
use strict;
use warnings 'all';
foo();
sub foo {
try {
print("hi\n");
}
catch {
die "FATAL: this went wrong, <$@>";
}
}
答案 0 :(得分:12)
try {
print("hi\n");
}
catch {
die "FATAL: this went wrong, <$@>";
}
获取解释为:
(do { print("hi\n") })->try(
(do { die("FATAL: this went wrong, <$@>") })->catch
)
是的,真的。
当检测到间接方法调用时,有一个名为indirect的模块可以为您提供编译时警告。