2011-07-21 5 views
1

このエラーは私を怒らせています。私は括弧のエラーや括弧がないこれらの行の近くに何も見ることができません。誰かが私に手を差し伸べる?これは私の最初の投稿です、フォーマットがオフの場合は私を許してください。私はそれが正しいと思う。Perl構文エラーですが、私の人生のためにそれを見つけることができません

EDIT:行87、 ');'エラーは、この行です:select(SEXTANT_DAEMON_LOG);

syntax error at -edited- line 87, near ");" 
syntax error at -edited- line 92, near "if" 
syntax error at -edited- line 99, near "if" 
Unmatched right curly bracket at -edited- line 102, at end of line 
syntax error at -edited- line 102, near "}" 
syntax error at -edited- line 109, near "}" 
syntax error at -edited- line 120, near ");" 
BEGIN not safe after errors--compilation aborted at -edited- line 122. 

これはエラー(full code here)付近コードです:

$MAIN_DBH = getConnection('Main'); 
$fs_logfile = getCSConfigValue($MAIN_DBH, 'Log', 'Sextant Update Daemon') or die "pid$$[" . localtime(time()) . "] Main dbh error: " . DBI::errstr; 
open(SEXTANT_DAEMON_LOG, '>>', $fs_logfile) or die "pid$$[" . localtime(time()) . "] unable to open log file '$fs_logfile'\n"; 
$tmp = select(SEXTANT_DAEMON_LOG); 
$| = 1; 
select(SEXTANT_DAEMON_LOG); 
+2

多くのコードを投稿する必要がある場合は、pastebinを使用してください。つまり、エラーを生成する行を囲む行を1行または2行だけにする必要があります。 –

+0

申し訳ありませんが余分なものを削除し、ペーストビンのリンクを掲示しました – aparker

+0

IO :: Handle; SEXTANT_DAEMON_LOG-> autoflush(1);を使用してください。より読みやすくなります。 –

答えて

11

Perlは非常に良いエラーメッセージを与えることが、何それは実際には不満なのは"pid$$["が無効な試みのように見えるということですされていませんアレイ@$にアクセスします。 "pid$$\["と交換してください。

私が見つけた方法は、最初のエラーの報告された場所の近くに__END__を挿入することでした。私は

$fs_logfile = getCSConfigValue($MAIN_DBH, 'Log', 'Sextant Update Daemon') or die "pid$$[" . localtime(time()) . "] Main dbh error: " . DBI::errstr; 

その後、私はバックスラッシュを追加する試み、それがエラーを修正したエラーの原因となった最初の行を見つけるまで私が上下に移動し。

注:perl -cは、このような状況で非常に便利です。

+0

それはそれでした!ああ、応答に感謝します。私はそれについても考えていませんでした。 – aparker

+0

何かを展開するつもりがないときは、常に一重引用符を使用することが、このようなエラーを避けるための良い方法です。 – musiKk

+0

@musiKk、彼は '$$'を拡張しようとしていたので、一重引用符は機能しませんでした。彼はちょうどそれが配列の添え字であると思うようにPerlを意図していませんでした。 – cjm

関連する問題