perl – 旧的.pl模块与新的.pm模块

perl – 旧的.pl模块与新的.pm模块,第1张

概述我是Perl的初学者,我正在努力构建构建Perl程序的最佳方法.我精通 Python,我习惯于从foo import bar中导入python模块导入函数和类的方法.正如我在Perl中所理解的那样,有很多方法可以做到这一点,.pm和.pl模块,EXPORT和@ISAs,使用和要求等等.初学者不容易弄清楚哪些是差异,每个的优点和缺点(甚至在阅读Beginning Perl和Intermediate 我是Perl的初学者,我正在努力构建构建Perl程序的最佳方法.我精通 Python,我习惯于从foo import bar中导入python模块导入函数和类的方法.正如我在Perl中所理解的那样,有很多方法可以做到这一点,.pm和.pl模块,EXPORT和@ISAs,使用和要求等等.初学者不容易弄清楚哪些是差异,每个的优点和缺点(甚至在阅读Beginning Perl和Intermediate Perl之后).

问题所在,我目前的问题与perldoc perlmod的一句话有关:

Perl module files have the
extension .pm. The use operator
assumes this so you don’t have to
spell out “Module.pm” in quotes. This
also helps to differentiate new
modules from old .pl and .ph files.

旧的.pl准备模块的方式与新的.pm方式有什么区别?

它们真的是古老而现代的方式吗? (我认为它们是因为Perlmod说的,但我想得到一些关于此的意见).

解决方法

Which are the differences between old .pl way of preparing modules and the new .pm way?

您可以在Perl自己的标准库中找到几个旧模块(由@INC指向,路径可以在perl -V输出中看到).

在较旧的时代,没有包裹.一个人在做,例如要求“open2.pl”;这类似于基本上包括调用脚本中的文件内容.声明了所有函数,所有全局变量都成为脚本上下文的一部分.或者换言之:污染您的上下文.包含多个文件可能会导致所有可能的冲突.

新模块使用package关键字来定义自己的上下文和命名空间的名称.当脚本执行use时,新模块可能无法将任何内容导入/添加到脚本的直接上下文中,从而防止名称空间污染和潜在冲突.

@ EXPORT / @ EXPORT_OK列表由标准实用程序模块Exporter使用,它有助于将模块函数导入调用上下文:这样就不必一直写入函数的全名.列表通常由模块定制,具体取决于传递给用户的参数列表,如使用POSIX qw /:errno_h /;.有关详细信息,请参见perldoc Exporter.

@ISA是Perl的继承机制.它告诉Perl如果它在当前包中找不到函数,则在@ISA中提到的所有包中扫描函数.简单的模块通常只有提到的Exporter才能使用它的import()方法(在同一个perldoc Exporter中也有很好的描述).

总结

以上是内存溢出为你收集整理的perl – 旧的.pl模块与新的.pm模块全部内容,希望文章能够帮你解决perl – 旧的.pl模块与新的.pm模块所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1267216.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存