从我读过的关于使用 Perl 模块的所有内容来看,基本用法是:
- 带有
.pm
扩展名的模块文件,其中包括语句package <name>
,其中<name>
是不带扩展名的模块的文件名。 - 使用模块的代码文件包含语句
use <name>;
。
我正在编写的应用程序有一个主要的代码脚本,它使用了大约 5 个模块。我忘记package <name>
在模块中包含该语句,但我的代码仍然可以正常运行该use <name>
语句。我开始收到Undefined subroutine
其中一个模块的错误,因此我将 package 语句添加到每个模块中。现在这些模块的其余部分停止工作。是什么赋予了?
例子:
主应用程序.pl
#!/usr/bin/perl
use UtyDate;
my $rowDate = CurrentDate("YYYYMMDD");
UtyDate.pm
#!/usr/bin/perl
package UtyDate;
sub CurrentDate
{
#logic
}
return 1;
当我运行上面的代码时,我得到了错误Undefined subroutine &main::CurrentDate called at...
。但是,如果我package UtyDate;
从 UtyDate.pm 中删除该行,则不会出现错误。这种情况存在于我的几个但不是所有模块中。
显然还有很多我没有展示的代码,但我很困惑我没有展示的任何代码如何影响我在这里展示的包/使用结构。