gpt4 book ai didi

perl - 在 Perl 中使用 die 时的退出代码

转载 作者:行者123 更新时间:2023-12-03 07:39:48 30 4
gpt4 key购买 nike

我已经在 perl 中为我的日志框架覆盖了 die,这样它就可以记录消息并将其打印在控制台上。

die 的覆盖代码:

BEGIN{ *CORE::GLOBAL::die = sub { 
my ($package, $filename, $line, $subroutine) = caller;
untie *STDERR;
my $message;
foreach my $arg (@_) {
$message = $message.$arg;
}

print STDERR $message;
tie *STDERR, __PACKAGE__, (*STDERR);
logmessage("die",$message,$filename, $line);
#What exit code to pass?
#exit CODE;
}
}

我不知道在退出进程时要设置什么退出代码,因为正常的 die 会以错误代码退出。

  • 有什么方法可以找出死机时要设置的退出代码叫什么?

  • 另外如果能知道可用的错误代码列表会很有帮助在 Perl 中?

最佳答案

退出代码记录在 die 中:

 exit $! if $!;              # errno
exit $? >> 8 if $? >> 8; # child exit status
exit 255; # last resort

但正如@amon 指出的那样,die 不会退出,它会抛出异常。与其覆盖它,不如将整个事情包装成一个 eval { ... ; 1 }(或 Try::Tinytry)并在 or docatch 部分记录异常。

关于perl - 在 Perl 中使用 die 时的退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46581860/

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