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}
。这两个选项都不会捕捉到与您的请求相匹配的警告,但不太可能是您真正想要的。