Perl循环不打印字符

时间:2013-03-20 18:03:18

标签: perl

这个人有我。

这有效:

print "Processing Feed\n";
while ( my @p = $mainex->fetchrow_array ) {
    my $iis = "$pcount";
    print "$iis\n";
    # ... Do Other Stuff Here
    $pcount++;
}

给出了:

Processing Feed
1
2
3
4
5
6
7
8
9
10
...

这不起作用(从第4行删除\ n):

print "Processing Feed\n";
while ( my @p = $mainex->fetchrow_array ) {
    my $iis = "$pcount";
    print "$iis";
    # ... Do Other Stuff Here
    $pcount++;
}

简单地说:

 Processing Feed

我正在尝试构建一个计数器,该计数器将使用以下内容输出记录的计数:

while( Something ){
    print "\b\b\b\b\b\b\b\b\b\b\b";
    print "$count";
    $count++;
    # Do stuff here
}

为什么在第二个例子中没有\ n时为什么没有打印到屏幕?我以前做了很多次,无法弄清楚它为什么不起作用。

2 个答案:

答案 0 :(得分:6)

打印结束时的换行触发stdout的刷新,打印到屏幕上。如果您将$|++添加到perl脚本的顶部,它将为stdout打开autoflushing,您将看到您的数字。

答案 1 :(得分:4)

缓冲I / O.

当有换行符或缓冲区已满时(可能是512字节或4096字节或其他相当大的数字),数据会刷新到屏幕。