使用导入2个模块

时间:2010-04-08 19:00:43

标签: perl

我有2个perl模块,每个模块使用第二个模块,即 Module1.pm

使用Module2

Module2.pm

使用Module1

当我使用这些2个模块加载时会在后台发生什么 使用Module1; 使用Module2;

有人可以解释背景上发生了什么以及为什么我不进入infinate循环?

1 个答案:

答案 0 :(得分:10)

由于特殊哈希%INC

,您不会陷入无限循环
  

<强>%INC
  哈希%INC包含通过dorequireuse运算符包含的每个文件名的条目。键是您指定的文件名(模块名称转换为路径名),值是找到的文件的位置。 require运算符使用此哈希来确定是否已包含特定文件。

另外,请记住use Module LIST等同于

BEGIN { require Module; Module->import( LIST ); }

因此,当主程序使用Module1时,会发生以下序列:

  1. require Module1(来自包main
  2. require Module2(来自包Module 1
  3. require Module1(无效,因为Module1已经在%INC
  4. Module1->import(打包Module2
  5. Module2->import(打包Module1
  6. Module1->import(打包main