我对perl很陌生,我一直在尝试从一本书中学习。我用Komodo来运行脚本。
我正在尝试创建变量,但不是对书中的内容进行编码。
$x=4;我得写
my $x=4;否则,我会得到以下错误
Global symbol "$x" requires explicit package name为什么会这样呢?我能改变一下吗?
发布于 2013-12-19 00:35:52
您可以通过不使用use strict;来消除该需求,我不知道您是否看到了错误,因为您有use strict或者Komodo正在为您添加它。
然而,话虽如此,严格使用;。它抓住了各种各样的问题。
这本书似乎在教你Perl 4时代的编码实践。Perl 5是在1994年发布的!买一本更好的书(如现代Perl或学习Perl,第6版)!
发布于 2013-12-19 00:40:26
当您直接使用$x时,您使用的是无use strict; --我认为本文将帮助您理解perl作用域的含义。http://perlmaven.com/scope-of-variables-in-perl
发布于 2013-12-19 02:06:26
正如其他人所指出的,有人在您的代码中添加了“严格使用”。这是一件好事,也是一件应该永远做的事情。它捕获了代码中可能存在的许多错误。
但是,请检查您的书,并确保它谈到了my和our命令。如果是的话,我会继续写这本书。这是一本初学者的书,而且可能只是让你习惯于编写一些简单的东西,而不用使用很多在Perl中使用的神奇咒语。这样做的目的是让你写出这样的东西:
$x = 4;
print "Your number is $x\n";现在还行。让你习惯一些事情。给你信心,慢慢地,小心地把你吸引进来,就像一条垂钓者的鱼吸引它的猎物一样。没事的..。Perl很容易..。别担心任何事..。没什么好困惑的..。没有必要在为时已晚之前逃跑..。
那么,SNAP!而且,他们将教您真正的 Perl。
现在,如果您不想将my放在任何地方,只是为了使您的编码示例与书相匹配,那么将这两条语句放在程序的顶部:
no strict;
no warnings;这将关闭这两个语用学,并让您继续您的书。
就像关闭核电站的紧急备用系统一样。现在你可以全神贯注了,不必一直听那些烦人的警笛响了。
https://stackoverflow.com/questions/20671387
复制相似问题