我有一个Perl脚本,它需要一个--log=<log>
命令行参数。显然,这会将脚本输出发送到指定的文件名。 无需更改脚本,我可以提供任何命令行值来将输出发送到STDOUT而不是日志文件吗?如您所料,当我提供“ STDOUT”时,它将输出发送到名为“ STDOUT”的文件中。
以下是相关代码:
use Getopt::Long;
...
my %C;
my $result = GetOptions("log=s" => \$C{log},
...
);
...
my $log_file = $C{log};
...
my $log_fh;
if(open($log_fh, '>>', $log_file)) {
print $log_fh $txt;
close($log_fh);
} else {
print STDERR "couldn't open log file $log_file\n";
}
我怀疑答案是否定的,但我希望有人比我聪明一些,可以解决。
编辑:已建议这是pass stdout as file name for command line util?的副本。尽管存在一些重叠,但该问题涉及未指定语言的命令行实用程序。我的问题特别与Perl有关,甚至与以上代码有关,因此可能会有不同的答案。