Joe*_*ger 6 perl naming-conventions implicit
我好奇.大多数Perl隐式调用的子例程必须以全部大写字母命名.TIESCALAR,DESTROY等实际上perldoc perltoot说
如果构造函数可以有任意名称,那么为什么不使用析构函数呢?因为虽然显式调用了构造函数,但析构函数不是.破坏通过Perl的垃圾收集(GC)系统自动发生,这是一个快速但有些懒惰的基于参考的GC系统.要知道要调用什么,Perl坚持将析构函数命名为DESTROY.Perl关于调用析构函数的正确时间的概念目前还没有明确定义,这就是为什么你的析构函数在被调用时不应该依赖它们的原因.
为什么DESTROY全部上限?Perl有时会使用纯大写的函数名作为约定来表示Perl会以某种方式自动调用该函数.隐式调用的其他函数包括BEGIN,END,AUTOLOAD,以及perltie中描述的绑定对象使用的所有方法.
那么为什么import子程序是小写的呢?有没有人对此有很好的了解?
为了稍微扩展 DVK 的答案,在某些情况下,您需要显式调用import,例如在加载可选模块或自动填充命名空间时:
eval "require $modulename; $modulename->import( LIST ); ";
Run Code Online (Sandbox Code Playgroud)
我想不出您想要显式调用 DESTROY、TIESCALAR 等的任何情况。
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |