这是Perl 5.8.8要求的错误吗?

时间:2011-08-01 14:02:07

标签: perl require

代码如下:

#!/usr/bin/perl

print 1;
{
require shift;                                                                        
}

事实证明,当我运行./script script时,会打印两个1

所以我的脚本文件实际加载了两次?这是一个错误吗?

根据文件:

  

“require”要求包含库文件(如果尚未包含库文件)   被包括在内。

3 个答案:

答案 0 :(得分:4)

require只会在以前加载了requireusedo的文件时跳过加载文件,而不会加载作为主要脚本加载的文件。

请参阅:%INC

答案 1 :(得分:3)

不,这不是错误。你的脚本打印1,然后需要第一个参数的名称,在这种情况下你提供了名称'script',它再次运行你的脚本打印第二个参数。

Require;

The file must return true as the last statement to indicate successful execution of any initialization code, so it's customary to end such a file with 1; unless you're sure it'll return true otherwise. But it's better just to put the 1; , in case you add more statements.

此外,您应该会看到一些错误,例如Null filename used at script line 5

答案 2 :(得分:0)

当我运行你的代码时,我得到:

$ ./script script
Null filename used at script line 5.
Compilation failed in require at ./script line 5.
11$

所以我无法重现你的结果......;)

你做出了一个错误的假设:你的脚本被称为'脚本'的事实与use d require d do ne无关。 。require语句是第一次需要的东西。