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
,以避免需要解释器的硬编码路径。