Perl 日志消息意外写入目标文件
Perl log message is unexpected written into dest file
下面是一段写数据到文件的测试代码,
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))
日志消息 "test file name: datatest.txt" 附加在 datatest.txt 中
怎么了?
您已经 select
编辑了您的文件句柄 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
的作用。您可能需要在那里进行更改。但请记住,glob 文件句柄是全局的,您程序的其他部分可能会弄乱您的 OUT_FILE
.
下面是一段写数据到文件的测试代码,
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))
日志消息 "test file name: datatest.txt" 附加在 datatest.txt 中 怎么了?
您已经 select
编辑了您的文件句柄 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
的作用。您可能需要在那里进行更改。但请记住,glob 文件句柄是全局的,您程序的其他部分可能会弄乱您的 OUT_FILE
.