2011-07-07 25 views
0

我有一個Perl腳本;在我的個人計算機上運行完全相同版本的perl(5.10.1),它運行得非常好。但是,在服務器機器上,它不僅不能運行,而且會帶來奇怪的錯誤。它運行良好,直到最近,我確實檢查了所需的軟件包已安裝。的Perl好像破:「=:未發現」和「包:未找到」

腳本(它扼流圈)的開頭:

#!/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

順便說一句:你可以瞭解與perldiag這樣的錯誤:http://perldoc.perl.org/perldiag.html。尋找「未找到」。 – musiKk

+0

「推式@INC」不應用於前2個案例中,請參閱「lib」雜注。 –

+0

這些不是來自Perl的錯誤。 :) –

回答

6

的問題是,慶典試圖運行/編譯/解釋腳本,而不是perl的。

#! /usr/bin/perl 

應該在文件的最上面,沒有上面的東西。

+0

...爲什麼它在另一臺機器上工作? – Yamikuronue

+0

儘管上面的腳本似乎有shebang線,但我傾向於同意您的答案爲可能的問題。也許OP可以通過在命令行上明確地說'perl hermes3.5.pl'來運行腳本來證明/反駁理論? –

+0

移動shebang線顯示它現在認爲POE沒有安裝,當它很清楚時,我可以在那裏看到它。這是另一個問題,我更熟悉一個。我只是在等待,直到它讓我接受的答案>> – Yamikuronue