请考虑以下代码,其中test2.txt
包含文本Text2
(以及尾随换行符)。
use File::Copy;
open (my $fh, "|-", "cat");
print $fh "Test1\n";
copy("test2.txt", $fh);
close $fh;
我希望打印出来:
Test1
Test2
但是,正在打印以下内容:
Test2
Test1
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:1)
您正在混合缓冲和无缓冲IO,从来不是一个好主意。 (File :: Copy在两者之间使用sysread / syswrite及其自己的缓冲区。)
你做得好多了:
use File::Slurp 'read_file';
print $fh read_file('test2.txt');
虽然我确实想知道你为什么要和猫交配,如果你真的希望它能得到缓冲。