我很好奇。大多数Perl隐式调用的子例程必须以全部大写字母命名。 TIESCALAR,DESTROY等。实际上perldoc perltoot
说
如果构造函数可以任意 名字,那么为什么不是破坏者呢? 因为虽然构造函数是 显式调用,析构函数是 不。毁灭发生了 自动通过Perl的垃圾 集合(GC)系统,这是一个 快但有点懒 基于参考的GC系统。要知道 怎么称呼,Perl坚持认为 析构函数命名为DESTROY。 Perl的 是时候打电话了 析构函数没有明确定义 目前,这就是你的原因 析构者不应该依赖于何时 他们被称为。
为什么DESTROY全部上限? Perl on 场合使用纯粹的大写字母 函数名作为约定 表明该功能将是 在某些情况下由Perl自动调用 办法。其他被称为 隐含地包括BEGIN,END, AUTOLOAD,加上使用的所有方法 在perltie中描述的绑定对象。
为什么import
子程序为小写?有没有人对此有很好的了解?
答案 0 :(得分:6)
我会说“import
”不会被隐含地调用。这是use
实施发出的明确要求。引用perldoc use:
完全等同于:
BEGIN { require Module; Module->import( LIST ); }
答案 1 :(得分:3)
要稍微扩展DVK的答案,有些情况下您可以合法地明确调用import
,例如在加载可选模块或自动填充名称空间时:
eval "require $modulename; $modulename->import( LIST ); ";
我无法想到你曾想明确地调用DESTROY,TIESCALAR等的任何情况。
答案 2 :(得分:1)
这只是对设计的疏忽。改变已经太晚了。