Perl模块版本

时间:2013-01-12 13:54:36

标签: perl version perl-module

我的Web服务器的$HOME中安装了几个perl模块。用于运行perl 5.8.8的Web服务器,因此它们安装在$HOME/perl/lib/perl5/5.8.8/...

在服务器迁移期间,Web托管公司将perl更改为5.10.1,但在脚本开始失败之前我不知道这一点。我设法通过将5.8.8树复制到5.10.1进行快速修复,现在看起来工作正常,但我想避免我的脚本在将来失败。

即使perl版本再次升级,允许我的脚本使用5.8.8文件夹下的本地存储模块的最佳方法是什么?

我可以在我的脚本中添加对预期perl版本的检查,如果它发生更改,我会给自己发送电子邮件,但是到目前为止已经太晚了,因为在解决问题之前脚本可能已经失败了好几次。理想情况下,我想防止脚本完全失败。

3 个答案:

答案 0 :(得分:7)

根据您在配置环境时的灵活性,您可能需要使用Perlbrew

在特定版本上维护独立的Perl安装。当系统范围的Perl安装发生变化时,这可以避免令人讨厌的意外。

答案 1 :(得分:5)

您真正应该做的是确保在新安装中安装所需的模块。特别是对于XS(C级)模块,不能保证它们将在不重新编译的情况下在新版本的Perl上运行,因为核心可能已经改变。

您应该创建一个Makefile.PLBuild.PL来声明脚本的依赖关系,并且您的公司应该将其作为在服务器迁移时执行这些脚本的策略。

最后,是的,您可以检查$^V哪个是正在运行的Perl。如果你在BEGIN块中执行它,它将在启动期间执行。实际上,您可以将本地目录用于(纯perl)模块,然后使用lib模块指向它们。

答案 2 :(得分:2)

你为什么要移动文件?只需保持添加到PERL5LIB。

PERL5LIB=$HOME/perl/lib/perl5/5.10.1:$HOME/perl/lib/perl5/5.8.8

我强烈建议您只使用perlbrew在主目录中安装Perl版本,而不是主持人的怜悯。