2013-07-31 4 views
1

Как начинающий Perl, я иногда получаю ошибки компиляции и должен много искать, чтобы найти его. В конце концов, это просто недостающая точка с запятой в конце строки. Некоторые ошибки синтаксиса с отсутствующей точкой с запятой проверяются Perl, но не в целом. Есть ли способ получить эту проверку?Общая проверка отсутствующей точки с запятой

редактировать:

Я знаю о Perl :: Критик, но не может использовать его атм. И я не знаю, проверяет ли он пропущенную точку с запятой в целом.

+3

Это действительно то, что вы должны делать в редакторе, а не во время выполнения; таким образом, это скорее вопрос, специфичный для конкретного инструмента, чем вопрос, специфичный для языка. Какой редактор/IDE вы используете? –

+1

(В Vim, например, вы можете просто выполнить поиск '[^; {}] $', который выделит все символы конца строки, которые не являются скобками или точками с запятой.) –

+0

Я использую vim, спасибо за этот намек. Но для длинных скриптов, которые хорошо документированы, я должен искать какое-то время. Потому что я обычно не заканчиваю свои комментарии; – EverythingRightPlace

ответ

2

Поскольку точки с запятой на самом деле что-то означают в Perl и не только там для украшения, невозможно, чтобы любой инструмент (даже сам интерпретатор Perl) знал в каждом случае, действительно ли вы намеревались покинуть точку с запятой или не. Таким образом, на ваш вопрос нет ответа на общий случай; вам просто нужно пройти свой код и убедиться, что это правильно.

Как уже упоминалось в моих комментариях, вы можете попробовать использовать свой редактор, чтобы ускорить процесс поиска потенциально-неправильных строк; вы должны, однако, изучить или исправить это вручную или рискнуть новыми проблемами.

+0

Да, конечно, вы правы, что не может быть общего правила. Я искал способ минимизации поиска, и ваши советы действительно полезны. – EverythingRightPlace

1

Проверка синтаксиса - perl -c, но это ничем не отличается от попыток запустить программу прямо. Из-за его гибкого/неразрешимого синтаксиса обычно нельзя делать то, что вы хотите. Это недостаток комфорта и выразительности.

Обновление до последнего стабильного Perl, сообщения об ошибках парсера стали лучше/точнее в последние годы и будут правильно распознавать многие обстоятельства отсутствия точки с запятой.

Правило большого пальца, которое работает для многих парсеров/других языков: если ошибка не имеет смысла, посмотрите пару строк раньше.

+0

Да, это эмпирическое правило - это то, чего я тоже ожидал, и я думаю, что каждый опытный пользователь Perl сделает это.Я просто должен получить это в своей памяти;) – EverythingRightPlace

1

use diagnostics; обычно дает вам приятный намек, такой же как use warnings;. Старайтесь придерживаться последовательного стиля кодирования, проверьте perlstyle. Также вы можете использовать Perl::Critic online.

Также в качестве общего совета вы узнаете, как использовать пакеты и модули, попытайтесь сгруппировать код в подсистемы и изучите синтаксис массивов, списков и хэшей. Частая ошибка забывает о ; после анонимного присвоения hashref:

my $hashref = { a => 5, b => 10}; 
+0

Я всегда использую 'use strict' и' use warnings', но 'use diagnostics' для меня новый. Спасибо. – EverythingRightPlace

Смежные вопросы