Закрытие книги Excel вызывает «print () для закрытого дескриптора файла STDOUT» при последующем `print` - PullRequest
0 голосов
/ 07 февраля 2012

Версия Perl: v5.10.1 (*) для x86_64-linux-thread-multi

Я использую Spreadsheet::WriteExcel, и мне удалось успешно создать новую рабочую книгу, создать рабочие таблицы, закрыть рабочую книгу и т. Д. Однако после публикации закрытия рабочей книги я больше не могу печатать в 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";

Это когда я получаю сообщение об ошибке «print () on STDOUT закрытого дескриптора файла».

Я прочитал и попытался использовать IO::Scalar метод, описанный Джоном Макнамара, но безрезультатно. Как мне снова открыть STDOUT для вывода?

Ответы [ 2 ]

5 голосов
/ 07 февраля 2012
$workbook = close()

Вызывает глобальную функцию close без параметра, закрывая, таким образом, STDOUT (или каким бы ни был последний выбранный дескриптор файла).

Вы имели в виду это?

$workbook->close()
0 голосов
/ 07 февраля 2012

Вы можете попробовать сохранить обработчик STDOUT и затем восстановить его или распечатать непосредственно на нем: open(my $stdout, ">&STDOUT") or die "Can't save stdout: $!";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...