用于调用perl的包装器

时间:2011-02-17 10:23:00

标签: perl

如何使用包装器类型的脚本调用perl,以便迁移到更新版本的perl不会影响现有脚本?

3 个答案:

答案 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的不同版本,例如针对不同版本进行测试,这很方便。