为什么我需要在这个perl程序中使用use语句?

时间:2013-07-13 00:19:25

标签: perl

我有一个名为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语句。

1 个答案:

答案 0 :(得分:8)

use做了两件事:

  1. require是一个解析,编译和执行它的文件
  2. 它调用新模块上的import方法,该方法可以在当前命名空间中安装子例程。
  3. 在使用其中定义的subs之前,你必须以某种方式执行模块。

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

    use A::B::C ();