为什么Perl中的“import”子例程不是大写的

前端之家收集整理的这篇文章主要介绍了为什么Perl中的“import”子例程不是大写的前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我好奇.大多数Perl隐式调用的子例程必须以全部大写字母命名. TIESCALAR,DESTROY等.事实上 perldoc perltoot

If constructors can have arbitrary
names,then why not destructors?
Because while a constructor is
explicitly called,a destructor is
not. Destruction happens
automatically via Perl’s garbage
collection (GC) system,which is a
quick but somewhat lazy
reference-based GC system. To know
what to call,Perl insists that the
destructor be named DESTROY. Perl’s
notion of the right time to call a
destructor is not well-defined
currently,which is why your
destructors should not rely on when
they are called.

Why is DESTROY in all caps? Perl on
occasion uses purely uppercase
function names as a convention to
indicate that the function will be
automatically called by Perl in some
way. Others that are called
implicitly include BEGIN,END,
AUTOLOAD,plus all methods used by
tied objects,described in perltie.

那么为什么导入子程序是小写的呢?有没有人对此有很好的了解?

解决方法

为了扩展DVK的答案,有些情况下您可以合法地明确调用导入,例如在加载可选模块或自动填充名称空间时:
eval "require $modulename; $modulename->import( LIST ); ";

我想不出任何你想要明确调用DESTROY,TIESCALAR等的情况.

猜你在找的Perl相关文章