我有以下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。有人能解释一下原因吗?
听起来你没有正确设置你的模块。
运行以下自包含脚本将产生正确的结果:
{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;
行。该包不是通过文件名隐式设置的,必须在文件的顶部声明。