悲剧,绝对的悲剧,悲剧中的悲剧。
分类: PERL
2014-08-26 22:38:41
use 声明装载一个模块(如果它还没有被装载),并且把子过程和变量从这个命名模块输入到当前包。(从技术上来讲,它从那个命名模块向当前包输入一些语意,通常是通过把一些子过程或者变量名作成你的包里的别名的方法。)大多数 use 的声明看起来象:
这样和下面是完全一样的:
BEGIN 迫使 require 和 import 在编译时发生。require 确保该模块在还没有装载的时候装入内存。import 不是内建的函数——它只是一个普通的类方法,调用名字叫 MODULE 的包,告诉该模块把列表里的特性拖到当前包里来。模块可以用自己喜欢的任何方法实现它的输入方法,尽管大多数只是通过从 Exporter 类中继承 import 方法。Exporter 类在 Exporter 模块中定义。参阅第十一章,模块,以及 Exporter 模块获取更多信息。如果找不到 import 方法,那么调用将不声不响地忽略。
如果你不希望你的名字空间被修改,那么明确地提供一个空列表:
它和下面的代码完全一样:
因为 use 提供了一个非常开放的接口,所以用法(编译器指示器)也是通过模块来实现的。当前实现了的用法包括:
许多这些用法模块向当前词法范围输入语意。(它和普通模块不同,普通模块只是向当前包里输入符号,而除了该词法范围是在带有该包的情况下编译的以外,那些符号和当前词法范围没有什么关系。
还有一个对应的声明,no,它“戒除”任何原来用 use 输入的东西,让它们变得不再重要: