Ошибка синтаксиса Perl, но я не могу найти его на всю жизнь - PullRequest
1 голос
/ 21 июля 2011

Эта ошибка меня злит.Я не вижу ничего рядом с этими строками с ошибкой в ​​скобках или отсутствующими скобками.Кто-нибудь, дайте мне руку?Это мой первый пост, простите, если форматирование выключено;Я думаю, что я правильно понял.

РЕДАКТИРОВАТЬ: строка 87, ');'ошибка, это строка: выберите (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.

Это код рядом с ошибкой ( полный код здесь ):

$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 Ответ

11 голосов
/ 21 июля 2011

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 очень полезен в подобных ситуациях.

...