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

标签 perl module compilation forward-compatibility

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

所以我下载了模块及其依赖项。遵循依赖树非常痛苦,但我更担心其中一些是核心模块这一事实。如果我安装这些,我的 Perl 5.8.9 核心将有来自 5.12 的补丁。

我的问题是我如何知道我是否可以安全地安装 future 的模块,尤其是核心模块。是否有用于在 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

最佳答案

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

唯一的问题是如果一个模块不是双生命的,我在 this question ——这就是你可能是 S.O.L 的地方。

关于perl - 如何安全地为 Perl 5.8.9 编译 Perl 5.12 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4008964/

相关文章:

使用 nginx 和 FastCGI 的 Perl Web 服务 - 无法读取参数

c - 如何控制 apache c 模块中的连接

swift - Xcode:如何编译环境变量并在 Swift 中引用它们?

arrays - Perl:将元素插入数组用新的变量值替换现有值

MySQL - 在每个字段中搜索特定字符

perl - 对于 Perl 的 DBI,是否有相当于 PHP 的 mysql_real_escape_string() 的?

ruby - 如何在 ruby​​ 模块之间共享方法

templates - 自定义 Prestashop 管理模块

java - Ant4Eclipse - 在 buildJdtProject 任务中排除某些源文件夹

node.js - NodeJS CLD包外部依赖项