如何在perl中为windows和linux组合头文件

My development environment is windows and hosting environment is Linux. At the time of development i have the header: "#!c:/perl64/bin/perl.exe" 

当在Web服务器上托pipe时,我需要将所有Perl文件中的标题更改为:

 "#!/usr/bin/perl" 

这个过程是错误的,如果我错过了一些东西。 这是可能的结合在Perl文件中的两个头,并取决于操作系统,它select正确的?

简短的回答:你不应该需要Windows上的ActivePerl的shebang。

看起来你使用的是ActiveState Perl(默认情况下C:\perl64 ,草莓使用C:\strawberry )。 尽管历史上他们是一个UNIX-y的东西,ActiveState在Perl文件中解析shebang行,但只是为了得到解释器标志(像-T用于污点检查),但是你没有使用任何解释器标志,所以你不应该需要shebang在Windows上。

如果你的脚本“不执行”在Windows上(具体的错误在这里会有所帮助)没有shebang,那么别的是错的。 确保您的脚本具有.pl扩展名,并确保您的ActivePerl安装已被设置为.pl文件的默认值。 以下是安装说明:

http://docs.activestate.com/activeperl/5.18/install.html

另外,根据上述文件:

在Windows 2000 / XP / 2003 / Vista系统上,ActivePerl安装只能由特权用户执行。 如果在没有完全管理员权限的情况下安装ActivePerl,则会发生以下问题:…不会创建PerlScript文件关联

在Linux方面,如果像./my-script.pl那样运行脚本作为可执行文件,则只需要shebang,而不是像在perl my-script.pl那样手动指定解释器(或者,如果需要的话解释器标志)。 在基于Linux / UNIX的系统上,shebang的规范建议是#!/usr/bin/env perl ,以避免需要解释器的硬编码路径。