2

这个得到了我。

这有效:

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 时没有打印到屏幕上?我以前做过很多次,无法弄清楚为什么它不起作用。

4

2 回答 2

6

打印末尾的换行符触发标准输出的刷新,打印到屏幕上。如果您添加$|++到 perl 脚本的顶部,它将为标准输出打开自动刷新,您将看到您的数字。

于 2013-03-20T18:07:21.503 回答
4

缓冲 I/O。

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

于 2013-03-20T18:07:52.863 回答