我正在学习用Perl编写CGI应用程序 - Kevin Meltzer。布伦特·米哈尔斯基
本书中的脚本大多以此开头:
#!"c:\strawberry\perl\bin\perl.exe" -wT
# sales.cgi
$|=1;
use strict;
use lib qw(.);
$ | = 1行是什么?如何隔离它,例如。 $ | = 1;或$ | = 1; ? 为什么要使用严格;在$ | = 1之后; ?
由于
答案 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的“路径环境”,即它寻找模块等的地方。