0

我在 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;

谢谢,

阿南德

4

2 回答 2

0

STDOUT可以重定向到已经打开的文件句柄FPTR。出do块,STDOUT由于由设置的动态范围而恢复回来local

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

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

local 将列出的变量修改为封闭块、文件或 eval 的本地变量。

于 2013-08-19T07:15:32.487 回答
0

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

存储输出后,您只需将其附加到文件中即可。

希望对您有所帮助。

于 2013-08-19T07:25:04.440 回答