首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用use导入2个模块

问使用use导入2个模块
EN

Stack Overflow用户
提问于 2010-04-09 03:00:43
回答 1查看 112关注 0票数 2

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

使用Module2

Module2.pm

使用Module1

当我使用use Module1;use Module2加载这两个模块时,后台会发生什么?

谁能解释一下在后台发生了什么,为什么我没有进入无限循环?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-09 03:21:30

您不会因为特殊的散列%INC而陷入无限循环

%Inc.

散列%INC包含通过do、require或use操作符包含的每个文件名的条目。键是您指定的文件名(将模块名转换为路径名),值是找到的文件的位置。require运算符使用此哈希来确定是否已包含特定文件。

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

代码语言:javascript
复制
BEGIN { require Module; Module->import( LIST ); }

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

  1. require Module1 (from package main)
  2. require Module2 (from package Module 1)
  3. require Module1 )(不执行任何操作,因为%INC)
  4. Module1->import中已经存在Module1 (into package Module2)
  5. Module2->import (into package Module1)
  6. Module1->import (into package main)
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2602635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档