Perl 将消息重定向到文件

Perl 将消息重定向到文件,perl,Perl,我正在打开一个文件,如下所示: open (my $fh, '<', $query_file) or die "Query for specified metric does not exist : $!"; my $query = <$fh>; close $fh; local $SIG{__DIE__} = sub { my ($die_message) = @_; open (my $log, ">>", '/tmp/die.log');

我正在打开一个文件,如下所示:

open (my $fh, '<', $query_file) or die "Query for specified metric does not exist : $!";
my $query = <$fh>;
close $fh;
local $SIG{__DIE__} = sub {
    my ($die_message) = @_;
    open (my $log, ">>", '/tmp/die.log');
    print $log $die_message;
};
打开(my$fh,从

当发生致命错误时,调用由
$SIG{{uuuuu DIE}
指示的例程 将引发异常。错误消息将作为 第一个论点

您可以按如下方式使用它:

open (my $fh, '<', $query_file) or die "Query for specified metric does not exist : $!";
my $query = <$fh>;
close $fh;
local $SIG{__DIE__} = sub {
    my ($die_message) = @_;
    open (my $log, ">>", '/tmp/die.log');
    print $log $die_message;
};

当发生致命错误时,调用由
$SIG{{uuuuu DIE}
指示的例程 将引发异常。错误消息将作为 第一个论点

您可以按如下方式使用它:

open (my $fh, '<', $query_file) or die "Query for specified metric does not exist : $!";
my $query = <$fh>;
close $fh;
local $SIG{__DIE__} = sub {
    my ($die_message) = @_;
    open (my $log, ">>", '/tmp/die.log');
    print $log $die_message;
};

为什么标记为重复?我发布了两次吗?我不认为这是指定回答问题的重复。OP想知道如何重定向来自
die()的消息
到文件,而不是如何写入文件…最简单的方法是重定向程序的STDERR,这也会捕获警告。例如,
script.pl 2>log
其他选项包括在
eval{}
中运行整个程序,或者您可以挂接到
$SIG{{uu DIE}
。这两个选项都不会捕获与您的请求相匹配的警告,但不太可能是您真正想要的警告。为什么标记为重复?我发布了两次吗?我认为这不是指定回答问题的重复。OP想知道如何重定向来自
die()的消息
到文件,而不是如何写入文件…最简单的方法是重定向程序的STDERR,这也会捕获警告。例如,
script.pl 2>log
其他选项包括在
eval{}
中运行整个程序,或者您可以挂接到
$SIG{{uu DIE}
。这两个选项都不会捕捉到与您的请求相匹配的警告,但不太可能是您真正想要的。