2011-07-07 26 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

Btw:このようなエラーについては、perldiag:http://perldoc.perl.org/perldiag.htmlを参照してください。 「見つからない」を探します。 – musiKk

+0

"push @INC"はトップ2で使用しないでください。 "lib"プラグマを参照してください。 –

+0

これらはperlからのエラーではありません。 :) –

答えて

6

問題は、bashがperlではなくスクリプトを実行/コンパイル/解釈しようとしていることです。

#! /usr/bin/perl 

はファイルの最上部にある必要があります。

+0

...なぜそれは他のマシンで動作しますか? – Yamikuronue

+0

上記のスクリプトはシバン線を持っているように見えますが、私はあなたの答えに起こりそうな問題として同意する傾向があります。おそらくOPは、コマンドラインで 'perl hermes3.5.pl'と明示的に言ってこのスクリプトを実行して、その理論を証明/反証することができますか? –

+0

シバンラインを動かすと、POEがはっきりとインストールされていないと思うようになりました。それはまったく別の問題であり、私はもっと慣れ親しんでいます。 > – Yamikuronue

関連する問題