perl $ | = 1;这是什么?

时间:2011-06-10 07:53:42

标签: perl

我正在学习用Perl编写CGI应用程序 - Kevin Meltzer。布伦特·米哈尔斯基

本书中的脚本大多以此开头:

#!"c:\strawberry\perl\bin\perl.exe" -wT
# sales.cgi
$|=1;
use strict;
use lib qw(.);

$ | = 1行是什么?如何隔离它,例如。 $ | = 1;或$ | = 1; ? 为什么要使用严格;在$ | = 1之后; ?

由于

3 个答案:

答案 0 :(得分:25)

perlvar是你的朋友。它记录了所有这些神秘的特殊变量。

$ OUTPUT_AUTOFLUSH(又名$ |):

  
    

如果设置为非零,则在当前所选输出通道上每次写入或打印后立即强制刷新。默认值为0(无论系统是否真正缓冲了通道) ; $ |只告诉你是否在每次写入后都明确要求Perl刷新。如果输出到终端,则STDOUT通常是线路缓冲的,否则阻塞。 设置此变量主要用于输出管道或套接字时,例如在rsh下运行Perl程序并希望在输出时看到输出。 这对输入缓冲没有影响。请参阅getc。请参阅有关如何选择输出通道的选择。另见IO :: Handle。

         

助记符:当你想让你的烟斗滚烫时。

  

快乐的编码。


对于其他问题:

use strict;没有理由在$|之后,除了程序员约定。 $|和其他特殊变量不受严格的影响。间距也不重要 - 只需选择您的惯例并保持一致。 (我更喜欢空格。)

答案 1 :(得分:19)

每次写入或打印后,

$| = 1;强制刷新,因此输出会在生成后立即显示,而不是被缓冲。

请参阅perlvar文档。

$|是特殊变量的名称。您不应在$|之间添加空格。

是否在=周围使用空格对Perl无关紧要。我个人认为使用空格可以使代码更具可读性。

为什么use strict;出现在您的脚本$| = 1;之后我不知道,除了他们两者你放在那里的那种东西顶部,您必须将它们放在一个订单或另一个订单中。我认为首先不重要。

答案 2 :(得分:7)

在脚本的哪个位置添加use语句并不重要,因为它们都会在编译时得到评估。

$|是autoflush的内置变量。我同意在这种情况下,它是模棱两可的。但是,单独的$不是perl中的有效语句,因此通过消除过程,我们可以说它必须具有什么意义。

use lib qw(.)似乎是一件愚蠢的事情,因为“。”默认情况下已在@INC也许是因为这本书很老了。该语句告诉perl添加“。”到@INC数组,这是perl的“路径环境”,即它寻找模块等的地方。