小编Jan*_*san的帖子

CORE::GLOBAL::die 在 BEGIN 中重新定义

我有以下代码

print "Starting..\n";
eval { die "Before die sub redefinition\n" };
#die "Before die sub redefinition\n";
BEGIN {
    print "inside Begin block\n";
    *CORE::GLOBAL::die = sub {
        my ($message) = @_;
        print "Message: " . $message ."\n";
    }
}
eval { die "Right after begin block\n" };
print "done\n";
Run Code Online (Sandbox Code Playgroud)

输出如下,

inside Begin block
Starting..
Message: Right after begin block

done
Run Code Online (Sandbox Code Playgroud)

BEGIN块在任何其他语句之前首先执行;但是重新定义的CORE::Global::die只有在重新定义后才有效。Firstdie不使用重新定义的版本,而是使用原始版本。有人可以帮我找出原因吗?

perl die

2
推荐指数
1
解决办法
58
查看次数

标签 统计

die ×1

perl ×1