У вас есть 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
.