Perl动态包含文件

Perl动态包含文件,perl,Perl,我对perl有疑问, 我需要在命令行参数/switches/options中获取文件名,基于此,我需要在脚本中包含/require/use该文件。 因此,通过使用getopt变量,我能够完成它。然而,如果我在脚本中使用了“use strict”,我就无法获得它。请帮忙 我试了以下方法,效果很好 下午二时三十分 our $def_name = "me"; main.pl: my $name = "mathlib.pm"; require $name; print $def_name; 当我在m

我对perl有疑问, 我需要在命令行参数/switches/options中获取文件名,基于此,我需要在脚本中包含/require/use该文件。 因此,通过使用getopt变量,我能够完成它。然而,如果我在脚本中使用了“use strict”,我就无法获得它。请帮忙

我试了以下方法,效果很好

下午二时三十分

our $def_name = "me";
main.pl:

my $name = "mathlib.pm";
require $name;
print $def_name;
当我在main.pl和base.pm中包含以下行时

use strict;
use warnings;
我犯了一个错误

Global symbol "$def_name" requires explicit package name .
Execution of main.pl aborted due to compilation errors.

$def_name
尚未从
mathlib.pm
导出,它是一个包变量,不是全局变量
$mathlib::def_name
将起作用,或者您可以使用
导出器
模块将其导出到使用它的任何模块的名称空间。

您的意思是
base.pm
mathlib.pm
不同吗?
mathlib.pm
看起来如何?请参见抱歉,它不是base.pm,而是mathlib.pmName“mathlib::def_name”只使用了一次:main.pl第8行可能有打字错误。我尝试了以下方法,print$mathlib::def_name;但是它显示的err
Name“mathlib::def_Name”只使用了一次:main.pl中可能的拼写错误
mathlib.pm
是否在顶部有
package
声明,即
package mathlib?谢谢你的帮助。我试着用希曼苏提到的链接。这有帮助。谢谢你