使用“File :: Copy”输出重新排序

时间:2013-03-04 07:53:19

标签: perl

请考虑以下代码,其中test2.txt包含文本Text2(以及尾随换行符)。

use File::Copy;

open (my $fh, "|-", "cat");
print $fh "Test1\n";

copy("test2.txt", $fh);

close $fh;

我希望打印出来:

Test1
Test2

但是,正在打印以下内容:

Test2
Test1

为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:1)

您正在混合缓冲和无缓冲IO,从来不是一个好主意。 (File :: Copy在两者之间使用sysread / syswrite及其自己的缓冲区。)

你做得好多了:

use File::Slurp 'read_file';

print $fh read_file('test2.txt');

虽然我确实想知道你为什么要和猫交配,如果你真的希望它能得到缓冲。