如何使用包装器类型的脚本调用perl,以便迁移到更新版本的perl不会影响现有脚本?
答案 0 :(得分:2)
您想象的场景究竟是什么?
你有一个" perl"二进制,你可以从Perl 5.8改为5.10?
最简单的解决方案是让你的shebang专线指向特定版本的Perl。
这种方法有两种形式 - 一种具有特定于版本的软链接,一种具有"当前生产版本的Perl"之一。
$ ln -s /usr/local/perl5.8/bin/perl /usr/local/bin/perl5.8
$ ln -s /usr/local/perl5.8/bin/perl /usr/local/bin/current/perl
$ cat my_script.pl
#!/usr/local/bin/perl5.8
# This script is REALLY hard coded to 5.8
...
$ cat my_script2.pl
#!/usr/local/bin/current/perl
# This script is hard coded to 5.8 for now,
# but can be easily switched to different Perl version as part of MASS migration when ready
...
这样,您的脚本始终保证使用Perl 5.8,即使您最终升级到5.12和" perl"就PATH而言,binary将开始调用perl 5.12。
这种方法也使升级更容易 - 只需将软链接更改为指向新的Perl二进制文件。
答案 1 :(得分:1)
在perl 5中,记录功能的向后兼容性极不可能被破坏。
保险将保留旧的perl二进制文件的副本。
答案 2 :(得分:1)
目前还不完全清楚你想要哪一个,但是:
如果 DO 希望始终运行perl
中的第一个$PATH
,以便您透明地获得升级版本,则应使用{{1 }}
如果您不要希望您正在运行的版本从您的下方更改,则可以在其他位置安装所需的#!/usr/bin/env perl
比 perl
(因为那是由您的操作系统供应商管理的,而不是由您管理的,所以当您不希望或期望它时它可能会改变)并以/usr/bin/perl
启动您的Perl
在后一种情况下,您仍然可以使用#!/path/to/my/custom/perl
并操纵#!/usr/bin/env perl
,以便您要使用的$PATH
是第一个找到的perl
。如果您想在不同时间使用perl
的不同版本,例如针对不同版本进行测试,这很方便。