我正在学习用Perl编写CGI应用程序 - Kevin Meltzer。布伦特米哈尔斯基
脚本的书大多与此开始:
#!"c:\strawberry\perl\bin\perl.exe" -wT
# sales.cgi
$|=1;
use strict;
use lib qw(.);
什么是行$ | = 1;如何分隔它,例如。 $ | = 1;或$ | = 1; ? 为什么要使用严格;在$ | = 1之后; ?
感谢
我正在学习用Perl编写CGI应用程序 - Kevin Meltzer。布伦特米哈尔斯基
脚本的书大多与此开始:
#!"c:\strawberry\perl\bin\perl.exe" -wT
# sales.cgi
$|=1;
use strict;
use lib qw(.);
什么是行$ | = 1;如何分隔它,例如。 $ | = 1;或$ | = 1; ? 为什么要使用严格;在$ | = 1之后; ?
感谢
perlvar是你的朋友。它记录了所有这些神秘的特殊变量。
$ OUTPUT_AUTOFLUSH(又名$ |):
如果设置为非零,强制冲洗马上和每一个书写或打印当前选中的输出通道后。默认值为0(不管通道是否真的被系统缓冲; $ |只会告诉您是否在每次写入后明确要求Perl刷新)。如果输出到终端并且块被缓冲,则STDOUT通常会被行缓冲。 设置此变量主要用于当您输出到管道或套接字时,例如当您在rsh下运行Perl程序并且想要在输出发生时看到输出。 这对输入缓冲没有影响。请参阅getc。请参阅选择如何选择输出通道。另见IO :: Handle。
助记符:当你想让你的管道变热时。
快乐编码。
对于其他问题:
没有理由认为use strict;
来$|
后,除由程序员约定。 $|
等特殊变量不受这种严格的影响。间距也不重要 - 只要选择你的惯例并保持一致。(我更喜欢空格。)
$| = 1;
迫使每次写入或打印后冲洗,这样它产生的,而不是被缓冲的输出尽快出现。
请参阅perlvar文档。
$|
是特殊变量的名称。您不应在$
和|
之间引入空格。
无论你是否使用=
左右的空白对Perl都无所谓。我个人认为使用空格会使代码更具可读性。
为什么use strict;
进来脚本$| = 1;
后,我不知道,但他们都的诸如此类的事情你摆正在顶部,你必须把它们放到一个订单或另一个。我认为这不重要。
在脚本中放置use
语句的位置并不重要,因为它们都在编译时得到评估。
$|
是autoflush的内置变量。我同意在这种情况下,它是不明确的。但是,一个单独的$
在perl中不是一个有效的语句,所以通过消除的过程,我们可以说它意味着什么。
use lib qw(.)
看起来像是一件愚蠢的事情,因为“。”在默认情况下已经在@INC
。也许这是由于这本书很旧。这个语句告诉perl添加“。”到@INC
数组,这是perl的“路径环境”,即它在哪里寻找模块等。
用Perl编写CGI应用程序是一本很好的书,但非常非常非常(10年!)。最佳实践和语言生态系统在那个时候已经发展了很多,确保你还阅读了一些最新的材料,搜索“现代perl”或“学习perl” – mirod 2011-06-10 08:07:20
@mirod只是为[现代perl提供缺失的链接github](https://github.com/chromatic/modern_perl_book),因为它一直处于活动状态,并不时更新。 – mbx 2011-06-10 08:23:13
@mirod现在你让我怀旧了.. 1995年,我使用了Macintosh的Netscape,它可以放在一张1,44mb的软盘上。 ;) – TLP 2011-06-10 08:39:56