关闭excel工作簿会导致后续`print`上的“print()on closed filehandle STDOUT”

时间:2012-02-07 15:29:35

标签: perl

Perl版本:为x86_64-linux-thread-multi构建的v5.10.1(*)

我正在使用Spreadsheet::WriteExcel并且我已经能够成功创建新工作簿,创建工作表,关闭工作簿等。但是,在工作簿上发出close后,我再也无法打印到STDOUT。

my $outFile = tmpnam();
my $workbook = Spreadsheet::WriteExcel->new($outFile);
die "Error creating new Excel workbook: $!" unless defined $workbook;
...
$workbook = close() or die "Error closing Excel workbook: $!";

print "Trying to print something\n";

这是我在关闭文件句柄STDOUT上的“print()”错误消息。

我已阅读并尝试使用John McNamara所描述的IO::Scalar方法无济于事。如何重新打开STDOUT以进行输出?

2 个答案:

答案 0 :(得分:5)

$workbook = close()

这将调用没有参数的全局函数close,从而关闭STDOUT(或者最后选择的文件句柄)。

你的意思是?

$workbook->close()

答案 1 :(得分:0)

您可以尝试保存STDOUT处理程序,然后将其还原或直接打印到它:open(my $stdout, ">&STDOUT") or die "Can't save stdout: $!";