我想运行一个程序并将其输出传递给一个文件。该程序可能会运行几个小时,所以我想记录程序运行时发生的所有数据。我该怎么办?
所以到目前为止,我已经完成了这项工作。作为一个例子,我使用ifconfig作为我的程序。所以在这种情况下我想将ifconfig输出到一个文件。但是下面的代码输出到STDOUT。如何将输出重定向到文本文件?
my $program1 = "/sbin/ifconfig";
open my $print_to_file, "|-", $program1, @args;
print $print_to_file;
close($print_to_file);
答案 0 :(得分:2)
怎么样:
`$program @args > outfile`
答案 1 :(得分:1)
在您的示例中,$print_to_file
是一个输入句柄(它是外部程序的输出流,但您的Perl脚本从中读取)。所以从中读取并通过输出文件句柄将其内容写入文件:
open my $read_from_cmd, "|-", $program1, @args; # an input handle
open my $print_to_file, '>', $the_file; # an output handle
print $print_to_file <$read_from_cmd>;
close $read_from_cmd;
close $print_to_file;