如何安全地为Perl 5.8.9编译Perl 5.12模块?

Mar*_*n08 3 perl module compilation forward-compatibility

我想在我的Perl 5.8.9中安装File :: Fetch,它是Perl 5.12中的核心模块.一般来说,我想在我的后期Perl中编译和安装未来日期的模块,因为我无法升级我的Perl.

所以我下载了模块及其依赖项.依赖树之后非常痛苦,但我更关心的是它们中的一些是核心模块.如果我安装这些,我的Perl 5.8.9核心将有5.12的补丁.

我的问题是如何知道我是否可以安全地安装未来的模块,特别是核心模块.是否有一个教程用于测试Perl中的向后兼容性?

编辑:
我的模块是双重生命,但我无法使用cpan编译它.它说我的FTPsite.yaml有一个坏元素.但是,我遵循模块的META文件中的依赖项,我可以编译模块.这是cpan中的奇数位吗?谢谢.

我手动安装所有这些依赖项后无法重新创建该问题.但这是错误:

cpan[5]> install File::Fetch
Running install for module 'File::Fetch'
Running make for B/BI/BINGOS/File-Fetch-0.24.tar.gz
CPAN: Digest::SHA loaded ok (v5.48)
CPAN: Time::HiRes loaded ok (v1.9715)
CPAN: YAML loaded ok (v0.72)
Alert: While trying to 'parse' YAML file
 '/Users/martin/.cpan/FTPstats.yml'
with 'YAML' the following error was encountered:
  YAML Error: Invalid element in map
   Code: YAML_LOAD_ERR_BAD_MAP_ELEMENT
   Line: 3
   Document: 1
 at /opt/local/lib/perl5/site_perl/5.8.9/YAML.pm line 36
Run Code Online (Sandbox Code Playgroud)

Eth*_*her 8

如果模块可以单独使用(即"双重生命"),作为独立发行版和内部核心Perl,那么独立版本可以安全地安装在早期的Perl上,假设它的Makefile允许它.也就是说,如果你可以做到cpan <Module>并且构建和测试没有错误,那么你就是好的.

唯一的问题是如果一个模块不是双重生命的,我在这个问题中提出这个问题 - 这就是你可能的SOL


yst*_*sth 5

如果perl核心模块也可以单独使用,这意味着它可以用于较旧的perls(除非它明确要求某个版本的perl),如果没有,那就是一个bug.

也就是说,5.10几乎在三年前发布了,你将开始看到越来越多的问题使用旧版perl的新模块.

cpan或cpanplus将为您处理依赖项.

  • 好吧,双重生活并不意味着它打算与旧的perls合作.这意味着它的开发不必等待新的perl.这些模块可能适用于较旧的perls,但这不是重点. (2认同)