使用反射用perl传递参数



我有以下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;行。该包不是通过文件名隐式设置的,必须在文件的顶部声明。

相关内容

  • 没有找到相关文章

最新更新