【perl】报错合集

perl报错合集

(注:可能会不定时更新)

1.Name “main::x” used only once: possible typo at …
在这里插入图片描述

1.Name "main::x" used only once: possible typo at ...

给某个变量赋值但是从来没有用它,或者变量之只用一次但没有给它赋值,这一般表示在代码中隐含某个错误。

大概唯一“合理”的解释就是输入错。比如说给变量赋值,

 use warnings;   $x = 42;

你可能会对"main::“部分没有$ 符号感到奇怪。这是因为Perl的变量默认是在"main"命名空间下。
或许有好多东西都称为"main::x”,但是只有一个在将$作为前导符号。如果这听起来很迷惑人,不要担心。 因为它本来就很复杂。

只取值
如果你只使用某个变量一次

use warnings;
 
print $x;

那么会得到两条错误信息:

Name "main::x" used only once: possible typo at ...
Use of uninitialized value $x in print at ...

其中之一是我们正在讨论的,而另一个将会在使用未初始化的值中讨论。

有什么输入错误?
你可能会这么问。

设想一下,有人使用了一个变量$ l1,之后你要使用同一个变量,但是你却输入了$ ll。可能是因为在你的字体中它们看起来很像。

或者变量是$ color,但你是英国人,你可能自然而然地在考虑同一个东西的时候输入$ colour。

再或者有个变量是$ number_of_misstakes,而你没有注意到原来的变量就有输入错误,然后你输入了$ number_of_mistakes。

理解了吧。

如果幸运的话,你可能只犯一次错误,不过如果你倒霉地使用了两次错误的变量,这样的警告就不会出现了。毕竟你两次使用了同一个变量两次,可能有个好的理由。

那么如果避免呢?

尽可能不要使用有歧义的字母,并且在输入变量名字的时候尽量小心一点。

如果想真正的解决这个问题,你可以使用use strict!

use strict
上面的例子中你发现我没有使用strict。如果用的话,就不会有可能输入错误的警告,取而代之的是编译时错误:Global symbol requires explicit package name。

即便你多次使用错误的变量也会出现这样的提示。

当然,看到错误后有些人会匆忙地在错误的变量前面加上"my",但你不会这么做,对么?正确的做法是好好思考问题,直到搜索到真正的变量。

如果没有使用strict通常会看到这个警告。

然后你就陷入了麻烦之中。
2.BEGIN not safe after errors–compilation aborted

2.BEGIN not safe after errors--compilation aborted 

3.Can’t locate Coordinate.pm in @INC

3.Can't locate Coordinate.pm in @INC

出现上面三个错误,大部分的原因是没有配置相应的资料包在komodo里面,因为需要运行的东西是需要很多资料包辅助运行的,才可以成功运行。

你可能感兴趣的:(perl,perl,开发语言)