2013-07-13 28 views
1

我有一个名为foo的Perl子例程,它位于文件C.pm中。 C.pm是在目录B和目录A如下:A > B > C.pm > foo为什么我需要在这个Perl程序中使用声明?

我想从另一个文件调用foo子例程。如果我下面的工作原理:

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

//Code here 

foo($temp) 

但是,以下不工作

//Code here 

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

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

+3

千万记住''//是不是在Perl评论,请使用''#对于评论 –

+0

@JoelBerger你让我......这应该是一个'#'符号。你可以知道,我是一个Java程序员心脏 – Nosrettap

回答

8

use做了两两件事:

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

你必须以某种方式执行一个模块,然后再使用在其中定义的子模块。

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

use A::B::C(); 
+7

为了更进一步,有时使用完全限定名称的原因是,如果任何其他模块已经加载有问题的模块(通过使用或需要),现在你可以使用完全限定名称。检查'%INC'查看已经加载的内容。 –

相关问题