我发现了一个奇怪的问题

我发现了一个奇怪的问题
我发现了一个奇怪的问题:代码:

#####first program ##################
#!/usr/bin/perl -w
open (TEST,">>","2.txt") or die "$!";
select TEST;$|=1; select STDOUT;
print "1";
while(<>){
print TEST $_;
sleep 1;
print "2";
}
print "3";
close TEST;
print "4";


代码:

########second program #####################
#!/usr/bin/perl -w
open (TEST,">>","2.txt") or die "$!";
select TEST;$|=1; select STDOUT;
print "1\n";#不同之处:这里加了一个\n。
while(<>){
print TEST $_;
sleep 1;
print "2\n";#不同之处:这里加了一个\n。
}
print "3\n";#不同之处:这里加了一个\n。
close TEST;
print "4\n";#不同之处:这里加了一个\n。

#######################################

这2个程序的不同之处:就是在上面标示的4个print语句多加了一个\n。
看起来也一样的,但是在实际的输出过程中顺序却是不一样的。第一个是在把1.txt的内容写入到2.txt以后再全部执行4个print语句。第2个是写一个到2.txt,就print一个。知道是什么问题吗?谢谢!!!