【问题标题】:Why do I need a use statement in this perl program?为什么我需要在这个 perl 程序中使用 use 语句?
【发布时间】:2013-07-11 15:18:06
【问题描述】:

我有一个名为 foo 的 perl 子例程,位于文件 C.pm 中。 C.pm 在目录B 中,即在目录A 中,如下所示:A > B > C.pm > foo

我正在尝试从另一个文件调用 foo 子例程。如果我执行以下操作,它会起作用:

use A::B::C qw(foo);

//Code here

foo($temp)

但是,以下不起作用

//Code here

A::B::C::foo($temp)

为什么不呢?如果我在调用该子例程时明确写出路径,我认为我不需要包含 use 语句。

【问题讨论】:

  • 请记住 // 在 Perl 中不是注释,请使用 # 进行注释
  • @JoelBerger 你找到我了……那应该是# 符号。你看得出来,我的内心深处是个 Java 程序员

标签: perl


【解决方案1】:

use 做了两件事:

  1. requires 一个文件,它解析、编译和执行它
  2. 它在新模块上调用import 方法,该方法可以在您当前的命名空间中安装子例程。

在使用其中定义的 subs 之前,您必须以某种方式执行模块。

如果不想导入任何子程序或其他符号,可以给use空列表:

use A::B::C ();

【讨论】:

  • 为了更进一步,使用完全限定名称有时有效的原因是,如果任何其他模块已加载有问题的模块(通过 use 或 require),现在您可以使用完全限定名称姓名。检查%INC 以查看已加载的内容。
猜你喜欢
  • 2019-04-09
  • 2012-08-24
  • 2013-03-20
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多