Сообщение журнала Perl неожиданно записано в файл dest - PullRequest
0 голосов
/ 14 декабря 2018

Вот сегмент тестового кода для записи данных в файлы,

open(OUT_FILE, ">", $destfile)||die("can not open file!");
select(OUT_FILE);
binmode(OUT_FILE);
printf "test file name:\t'%s'\n", $destfile;
writebinary(OUT_FILE,pack('H*', $name))

В лог datatest.txt добавлено сообщение журнала «имя тестового файла: datatest.txt». Что не так?

1 Ответ

0 голосов
/ 14 декабря 2018

У вас есть select ed вашего файлового дескриптора OUT_FILE.select приведет к выводу из print и printf к выбранному дескриптору вместо STDOUT, который выбран по умолчанию.

Удалите вызов select.Вам это не нужно.


Обратите внимание, что ваш код очень старомоден.Это можно переписать следующим образом, чтобы учесть лексические дескрипторы файлов и правильную обработку ошибок:

open my $fh, '>', $destfile or die "Can't open file '$destfile': $!";
binmode $fh;
printf "test file name:\t'%s'\n", $destfile;
writebinary($fh, pack('H*', $name));

Конечно, вы не говорите нам, что делает writebinary.Возможно, вам придется внести изменения там.Но помните, что глобальные файловые дескрипторы являются глобальными, и другие части вашей программы могут связываться с вашим OUT_FILE.

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