Perl语法错误,但我找不到它的生命

时间:2011-07-21 17:33:54

标签: perl syntax-error

这个错误激怒了我。我在括号错误或缺少括号的行附近看不到任何内容。有人帮我一把吗?这是我的第一篇文章,如果格式化关闭,请原谅我;我想我做对了。

编辑:第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);

1 个答案:

答案 0 :(得分: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在这种情况下非常有用。