Perl:如何将打开命令的输出传递给文件

时间:2014-02-07 02:43:34

标签: perl

我想运行一个程序并将其输出传递给一个文件。该程序可能会运行几个小时,所以我想记录程序运行时发生的所有数据。我该怎么办?

所以到目前为止,我已经完成了这项工作。作为一个例子,我使用ifconfig作为我的程序。所以在这种情况下我想将ifconfig输出到一个文件。但是下面的代码输出到STDOUT。如何将输出重定向到文本文件?

my $program1 = "/sbin/ifconfig";
open my $print_to_file, "|-", $program1, @args;
print $print_to_file;
close($print_to_file);

2 个答案:

答案 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;