0

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

在服务器迁移期间,网络托管公司更改perl为,5.10.1但直到我的脚本开始失败时我才知道这一点。我设法通过将5.8.8树复制到它来进行快速的脏修复,5.10.1现在它似乎工作正常,但我想避免我的脚本将来像这样失败。

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

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

4

3 回答 3

7

Depending on the amount of flexibility you have when configuring your environment you may want to use Perlbrew.

to maintain an independent Perl installation at a specific version. This can avoid nasty surprises when the system-wide Perl installation changes.

于 2013-01-12T14:18:21.697 回答
5

您真正应该做的是确保在新安装中安装了所需的模块。特别是对于 XS(C 级)模块,由于内核可能已更改,因此无法保证它们无需重新编译就可以在新版本的 Perl 上运行。

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

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

于 2013-01-12T14:09:40.670 回答
2

你为什么要移动文件?只需继续添加到 PERL5LIB 即可。

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

我强烈建议您简单地使用perlbrew在您的主目录中安装 Perl 的构建,而不是任由您的主机摆布。

于 2013-01-12T19:41:09.297 回答