如何编写CPAN模块以支持多个Perl版本?
发布时间:2020-12-15 23:37:41 所属栏目:大数据 来源:网络整理
导读:假设我在CPAN上有一个模块,我想升级它以使用更新的Perls中的功能.现在,正如我所理解的那样,如果我这样做,我会在这个版本的沙子中说一句,如果你有Perl的X版本,你只能使用我的模块. 是否有一种干净/规范的方式来支持CPAN上同一模块的两个不同分支? 即,2.x系列
假设我在CPAN上有一个模块,我想升级它以使用更新的Perls中的功能.现在,正如我所理解的那样,如果我这样做,我会在这个版本的沙子中说一句,如果你有Perl的X版本,你只能使用我的模块.
是否有一种干净/规范的方式来支持CPAN上同一模块的两个不同分支? 即,2.x系列将继续维持版本回到5.8.x,而3.x将用于版本5.16. 解决方法
有两个具有相同名称的分支的问题是cpan :: Module将对一些用户不必要地失败(因为它将始终获得最新版本).他们仍然可以安装旧版本的模块,但它会更麻烦.而是将模块更改为
package The::Module; do($] < 5.016 ? 'The/Module/Pre5016.pm' : 'The/Module/5016.pm') or die $@ || $!; 1; 如果模块的有限部分不同,您可以简单地使用 sub _foo_compatible { ... } sub _foo_fast { ... } *foo = $] < 5.016 ? &;_foo_compatible : &;_foo_fast; 第二种方法的缺点是需要在5.8中编译sub(除非你将eval EXPR添加到混合中). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |