加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何编写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添加到混合中).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读