我的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版本的检查,如果它发生更改,我会给自己发送电子邮件,但是到目前为止已经太晚了,因为在解决问题之前脚本可能已经失败了好几次。理想情况下,我想防止脚本完全失败。
答案 0 :(得分:7)
根据您在配置环境时的灵活性,您可能需要使用Perlbrew。
在特定版本上维护独立的Perl安装。当系统范围的Perl安装发生变化时,这可以避免令人讨厌的意外。
答案 1 :(得分:5)
您真正应该做的是确保在新安装中安装所需的模块。特别是对于XS(C级)模块,不能保证它们将在不重新编译的情况下在新版本的Perl上运行,因为核心可能已经改变。
您应该创建一个Makefile.PL
或Build.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版本,而不是主持人的怜悯。