【发布时间】:2014-01-29 03:27:58
【问题描述】:
我的最终目标是使用参数作为包。我无法得到一个简单的例子来工作。有没有办法将use 和$variable 作为我的包裹?
我的模块.pm
package MyModule;
use strict;
use warnings;
use parent 'Exporter'; # imports and subclasses Exporter
our $test="hello world\n";
our @EXPORT = qw($test);
程序.pl
#!/usr/bin/perl
use strict;
use warnings;
my $x = 'MyModule.pm';
eval "require $x";
MyModule->import;
print "$test\n";
错误
Global symbol "$test" requires explicit package name at ./program.pl line 8.
Execution of ./program.pl aborted due to compilation errors.
【问题讨论】:
-
我敢打赌,您的
require声明中有错误。在eval调用之后检查$@的值。 -
对 require 的规范调用通常是
require MyModule或有时是require 'MyModule.pm'但不是require MyModule.pm。 -
不确定这是否是您的错误的具体原因,但请记住,您需要单独以
1;结束您的包文件。 -
我很想知道让你问这个问题的根本问题;很可能有更好的方法来解决它。
-
是的,有一个更简单的方法;跳过所有导入/模块的东西,只做
my $file = 'ArrayA'; my $test = do "$file.data";,其中 ArrayA.data 只包含数组数据(例如[[1,2,3],[4,5,6]])
标签: perl variables module package