我有以下Perl模块:
package module
sub test1{
my @data=@_
print @data;
}
当我使用以下命令从Perl脚本调用此模块时:
my $test='test1';
my $full_name = "Module::" . $test;
my @data=(1,2,3)
no strict 'refs';
$full_name->(@data);
我在stdout上没有结果,但我预计1,2,3。有人能解释一下原因吗?
答案 0 :(得分:1)
听起来您没有正确设置模块。
运行以下自包含脚本会产生正确的结果:
{package Module;
sub test1 {print "test1: @_\n"}
}
my $test = 'test1';
my $full_name = 'Module::'.$test;
my @data = (1, 2, 3);
no strict 'refs';
$full_name->(@data); # test1: 1 2 3
如果没有确切地知道您拥有的内容,很难说清楚,但您可能忘记在模块的顶部添加package Module;
行。该包不是通过文件名隐式设置的,您必须将其声明在文件的顶部。