【问题标题】:Perl include file dynamicallyPerl 动态包含文件
【发布时间】:2013-08-16 17:38:03
【问题描述】:

我对 perl 有疑问, 我需要在命令行参数/开关/选项中获取文件名,并基于此我需要在我的脚本中包含/需要/使用该文件。 因此,通过使用该 getopt 变量,我能够完成它。但是,如果我在我的脚本中使用了“使用严格”,我就无法得到它。请帮忙解决这个问题

我尝试如下及其工作

base.pm:

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.

【问题讨论】:

标签: perl


【解决方案1】:

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

【讨论】:

  • 名称“mathlib::def_name”只使用了一次:main.pl 第 8 行可能有错字。
  • 我尝试了以下,打印 $mathlib::def_name;但它显示错误Name "mathlib::def_name" used only once: possible typo at main.pl
  • mathlib.pm 是否在顶部有 package 声明,即 package mathlib;
  • 感谢您的帮助。我尝试了Himanshu提到的链接。它有帮助。谢谢你
猜你喜欢
  • 2011-03-29
  • 2011-07-28
  • 1970-01-01
  • 2013-09-04
  • 2014-08-28
  • 1970-01-01
  • 2013-05-16
  • 2016-12-16
  • 1970-01-01
相关资源
最近更新 更多