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

apa*_*ker 1 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.
Run Code Online (Sandbox Code Playgroud)

这是错误附近的代码(这里是完整代码):

$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);
Run Code Online (Sandbox Code Playgroud)

cjm*_*cjm 11

Perl没有提供非常好的错误消息,但实际上抱怨的是"pid$$["看起来像是无效的尝试访问数组@$.尝试替换它"pid$$\[".

我发现的方法是插入__END__第一个错误的报告位置附近.我上下移动它,直到找到导致错误的第一行,这是

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

然后我尝试添加反斜杠,并修复了错误.

注意: perl -c在这种情况下非常有用.