如何在PERL中已打开的文件中重定向控制台I / O.

时间:2013-08-19 07:12:48

标签: perl redirect printing console

我在PERL中使用system()函数来执行命令。我想将此函数的控制台I / O重定向到已在PERL脚本中打开的文件(参见下文)。我知道不可能在PERL中打开相同的文件以及重定向但是我需要在PERL脚本中将所有内容打印在单个文件中(PERL脚本打印语句和重定向输出)。有人可以帮我这个吗?

use strict;
use warnings;

open FPTR, ">Test.txt";
print FPTR "Executing Command1...\n";
system("Time >>Test.txt");

print FPTR "Executing Command2...\n";
system("Date >>Test.txt");

close FPTR;

谢谢,

阿南德

2 个答案:

答案 0 :(得分:0)

STDOUT可以重定向到已打开的文件句柄FPTR。退出do阻止,由STDOUT设置的动态范围恢复local

do {
  local *STDOUT = \*FPTR;
  print `date`;
};

来自http://perldoc.perl.org/functions/local.html

  

本地修改列出的变量,使其成为封闭块,文件或eval的本地变量。

答案 1 :(得分:0)

尝试使用反引号运算符执行命令并将其输出存储在变量中: my $var = `time`;

只要您将输出存储起来,您只需将其附加到您的文件中即可。

希望对你有所帮助。