【发布时间】:2015-10-14 18:09:22
【问题描述】:
当试图在其他 perl 文件中调用子程序(在用户定义的模块中定义)时,得到错误的参数值
#moduleName.pm
package PackageName::moduleName;
use strict;
use warnings;
use base 'Exporter';
sub callMe{
my($readArg)=(@_);
print $readArg;
}
#test.pl
use strict;
use warnings;
use FindBin; # locate this script
use lib 'path to parent directory'; # use the parent directory
use PackageName::moduleName;
if( my $temp=PackageName::moduleName->callMe("test")){
print" True : $temp\n";
}
函数将 $temp 的值打印为:PackageName::moduleName
不知道为什么。
附:在调用子程序时我必须保持相同的约定
【问题讨论】:
-
你的命名有点不走运。 package 的名称是
package关键字之后的所有内容。 模块 的名称通常是相同的。在谈论 CPAN 时,包名称的所有部分(除了最右边的部分)通常称为 namespace。有一个Data命名空间,其中包含几个不同的模块,例如Data::Dumper、Data::Printer和Data::Dump。
标签: perl