我是perl的新手,并且一直试图从书中学习。我正在使用Komodo来运行脚本。
我正在尝试创建变量,而不是编写本书的内容
$x=4;
我必须写
my $x=4;
否则我收到以下错误
Global symbol "$x" requires explicit package name
这是为什么?我可以改变吗?
答案 0 :(得分:4)
你可以通过不使用use strict;
来摆脱这个要求,我不知道你是否看到错误,因为你有use strict
或因为Komodo正在为你添加它。
然而,do use use strict;
。它捕捉到各种各样的问题。
这本书似乎在教你Perl 4时代的编码实践。 Perl 5于1994年发布!获得更好的书(例如Modern Perl或Learning Perl, 6th edition)!
答案 1 :(得分:0)
当你直接使用$ x时,你没有使用use strict;
我认为本文将帮助您理解perl范围的含义。
http://perlmaven.com/scope-of-variables-in-perl
答案 2 :(得分:0)
正如其他人所指出的那样,有人正在为您的代码添加 use strict; 。这是一件好事,应该始终做到。它会捕获您在代码中可能遇到的许多错误。
但是,请检查您的图书并确保其中有关my
和our
命令的说明。如果确实如此,我会继续坚持下去。这是一本初学者书,可能只是让你用来编写一些简单的东西,而不需要在Perl中使用很多神奇的咒语。这个想法是让你写下像这样的东西:
$x = 4;
print "Your number is $x\n";
现在这很好。让你习惯于事物。给你信心,慢慢地,小心地吸引你,就像一条垂钓鱼吸食它的猎物。没关系...... Perl很容易......不要担心事情......没有什么可以让它混淆的......没有必要在它太晚之前逃跑......
然后,SNAP!而且,他们会教你 真实 Perl。
目前,如果您不想将my
放在任何地方,只是为了使您的编码示例与本书相符,请将这两个陈述放在您的程序之上:
no strict;
no warnings;
这将关闭这两个pragmas并让您继续关注您的图书。
这就像关闭核电站的紧急备份系统一样。现在你可以集中注意力,而不必一直听那些恼人的警笛声。