【发布时间】:2010-06-04 20:59:25
【问题描述】:
从我读过的关于使用 Perl 模块的所有内容来看,基本用法是:
- 带有
.pm扩展名的模块文件,其中包含package <name>语句,其中<name>是不带扩展名的模块的文件名。 - 使用模块的代码文件包含语句
use <name>;。
我正在编写的应用程序有一个主要的代码脚本,它使用了大约 5 个模块。我忘记在模块中包含package <name> 语句,但我的代码在use <name> 语句中仍然运行良好。我开始收到其中一个模块的Undefined subroutine 错误,因此我将包语句添加到每个模块中。现在这些模块的其余部分停止工作。什么给了?
例子:
mainapp.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...。但是,如果我从 UtyDate.pm 中删除 package UtyDate; 行,则不会出现错误。这种情况存在于我的几个但不是所有模块中。
显然还有很多我没有显示的代码,但我很困惑我没有显示的任何代码会如何影响我在此处显示的包/使用构造。
【问题讨论】:
标签: perl perl-module