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以进行输出?
答案 0 :(得分:5)
$workbook = close()
这将调用没有参数的全局函数close
,从而关闭STDOUT
(或者最后选择的文件句柄)。
你的意思是?
$workbook->close()
答案 1 :(得分:0)
您可以尝试保存STDOUT处理程序,然后将其还原或直接打印到它:open(my $stdout, ">&STDOUT") or die "Can't save stdout: $!";