我有一个perl脚本;在我的个人机器上,运行相同版本的perl(5.10.1),它运行得非常好。但是,在服务器机器上,它不仅没有运行,它给我带来奇怪的错误。它一直运行到最近,我确实检查了所需的软件包是否已安装。
脚本的开头(它窒息):
#!/usr/bin/perl
package Hermes;
$VERSION = 3.5;
use FindBin qw($Bin);
push @INC,$Bin;
push @INC ,"/usr/local/lib/perl5/site_perl/5.10.1/";
require("Hermes_config.pm");
$install_Directory = $Config::install_Directory;
push @INC,$install_Directory; #Fix for running from rc.local
use warnings;
#use strict;
use Safe;
use POE;
use POE::Component::IRC;
use Module::Reload;
use Math::Expression::Evaluator;
输出:
Hermes3.0/hermes3.5.pl: 17: package: not found
Hermes3.0/hermes3.5.pl: 18: =: not found
Hermes3.0/hermes3.5.pl: 20: Syntax error: "(" unexpected
(在程序开始之前有15行评论的开源版权声明,因此是行号)。
安装了POE,Module :: Reload和Math :: Expression :: Evaluator(根据instmodsh),cpan告诉我FindBin是最新的,重新安装Safe没有帮助,所以它似乎不是一个丢失的包 - 除此之外,它没有告诉我一个包名失踪,它似乎在“包”这个词上窒息。重新安装Perl没有帮助(使用apt-get install --reinstall perl)。
我最近升级了机器的ubuntu版本;它很可能搞砸了,所以任何关于从哪里开始寻找的提示都会受到赞赏。
答案 0 :(得分:6)
问题是bash正在尝试运行/编译/解释脚本,而不是perl。
#! /usr/bin/perl
应该位于文件的最顶层,上面没有东西。