使用本地Perl模块,而不是CPAN安装的模块

时间:2019-07-19 20:23:13

标签: perl cpan

我发现有必要扩展CPAN模块。 (Unicode :: CharName升至Unicode 4.1;我需要Unicode 5.0和5.1中的一些字符)。

我已经进行了必要的更改,并拥有自己的CharName.pm模块。

我现在想将其与各种Perls一起使用。我目前使用:

  • Strawberry Perl for Windows
  • 对于Windows MINGW64,为
  • git;我的.bashrc集 草莓perl和$ PERL5LIB的$ PATH = / c / Strawberry / perl / vendor / lib:/ c / Strawberry / perl / site / lib
  • WSL Ubuntu

我应该在哪里放置Unicode :: CharName版本,以使其取代CPAN安装的版本?

我不想更改当前所有的脚本

use Unicode::CharName;

1 个答案:

答案 0 :(得分:3)

使用cpanm,您可以下载该模块,对其进行修补并按常规进行安装:

$ cpanm --look Unicode::CharName
# new shell opens
$ patch lib/Unicode/CharName.pm custom.patch # or whatever process
$ perl Makefile.PL
$ make install
$ exit

您还可以通过将-l local/选项添加到cpanm命令中,将其安装到local::lib以避免全局覆盖。然后,您可以将此本地:: lib的绝对路径添加到您的PERL5LIB中,或者通过-Iuse lib来添加。如果您为/path/to/local选项指定了-l,它将为/path/to/local/lib/perl5

手动复制文件而不是通过正常安装过程可能会导致问题。许多发行版取决于安装过程才能正确构建模块。另外,您将需要为要使用它的每个Perl分别安装该模块。安装的Perl模块通常在Perl版本或体系结构之间不交叉兼容。 (严格简单的纯Perl模块可能是这些规则的一个例外,但是我觉得很容易被这种方式滥用的唯一模块是App :: cpanminus,因为它是专门为执行此操作而设计的。)