我很好奇。大多数Perl的隐式调用子程序必须使用全大写字母命名,例如TIESCALAR、DESTROY等。实际上
如果构造函数可以有任意名称,那么为什么析构函数不能呢?因为虽然构造函数是显式调用的,但析构函数不是。销毁是通过Perl的垃圾回收(GC)系统自动发生的,这是一种快速但有些懒惰的基于引用的GC系统。为了知道该调用什么,Perl 坚持要求析构函数被命名为 DESTROY。目前,Perl 对何时调用析构函数的正确时间的概念尚未明确定义,这就是为什么您的析构函数不应依赖于它们被调用的时间。
为什么DESTROY要全部大写?在某些情况下,Perl 会使用纯大写函数名称作为约定来表示该函数将以某种方式由Perl自动调用。其他隐式调用的函数包括 BEGIN、END、AUTOLOAD,以及所有在perltie中描述的绑定对象使用的方法。
为什么
perldoc perltoot
说:如果构造函数可以有任意名称,那么为什么析构函数不能呢?因为虽然构造函数是显式调用的,但析构函数不是。销毁是通过Perl的垃圾回收(GC)系统自动发生的,这是一种快速但有些懒惰的基于引用的GC系统。为了知道该调用什么,Perl 坚持要求析构函数被命名为 DESTROY。目前,Perl 对何时调用析构函数的正确时间的概念尚未明确定义,这就是为什么您的析构函数不应依赖于它们被调用的时间。
为什么DESTROY要全部大写?在某些情况下,Perl 会使用纯大写函数名称作为约定来表示该函数将以某种方式由Perl自动调用。其他隐式调用的函数包括 BEGIN、END、AUTOLOAD,以及所有在perltie中描述的绑定对象使用的方法。
为什么
import
子程序保留小写?有人对此有深刻的见解吗?