use strict
генерирует ошибку, если вы используете символические ссылки (т. Е. Строки для представления имен символов). Он генерирует ошибку, если вы используете переменную без ее объявления (это поощряет использование лексических переменных 'my
', но также удовлетворяется, если вы правильно объявляете глобальные переменные пакета). Он также генерирует ошибку, если вы оставляете голые слова в скрипте (строки без кавычек, по сути, в соответствии с определением кавычек Perl). С помощью «strict
» вы можете включать или отключать любую из трех категорий ограничений, и я делаю это в рамках определенных блоков. Рекомендуется включать ограничения, хотя в некоторых случаях законный код требует, чтобы некоторые из его функций были локально отключены. Однако следует долго и серьезно подумать, действительно ли это необходимо, и идеально ли их решение. Вы можете прочитать о ограничениях в Perl POD под названием «strict».
use warnings
генерирует предупреждающее сообщение на основе многих критериев, которые описаны в POD 'perllexwarn'. Эти предупреждения не имеют ничего общего с ограничениями, а скорее обращают внимание на наиболее распространенные "подводные камни", с которыми можно столкнуться в их программировании. Также рекомендуется использовать предупреждения при написании скриптов. В некоторых случаях, когда сообщение может быть нежелательным, определенная категория предупреждений может быть локально отключена в пределах области действия. Дополнительная информация описана в «предупреждениях».
use diagnostics
делает предупреждения более подробными, что очень желательно в среде разработки или обучения, особенно среди новичков. Диагностика, вероятно, не будет включена в «конечный продукт», но в процессе разработки она может стать действительно хорошим дополнением к обычно генерируемым кратким сообщениям. Вы можете прочитать о диагностике в Perl POD "диагностика".
Нет причин заставлять себя использовать только один из вышеперечисленных вариантов. В частности, в современных программах на Perl обычно следует использовать и использовать предупреждения, и использовать строгую.
Во всех случаях (кроме диагностики, которую вы в любом случае используете только для разработки) отдельные ограничения или предупреждения могут быть лексически отключены. Более того, их ошибки могут быть отловлены с помощью eval{ .... }
, с помощью блоков try / catch Try::Tiny
и некоторыми другими способами. Если есть опасения по поводу сообщения, дающего потенциальному злоумышленнику дополнительную информацию о сценарии, сообщения могут быть перенаправлены в файл журнала. Если существует риск того, что указанный файл журнала займет много места, существует более серьезная проблема, и источник проблемы должен быть либо устранен, либо, в некоторых редких случаях, просто отключить сообщение.
Программы Perl в настоящее время должны быть очень строгими / совместимыми с предупреждениями, как лучшая практика.
person
DavidO
schedule
18.06.2011
use warnings 'FATAL'
, чтобы он умирал при предупреждениях. - person xenoterracide   schedule 19.06.2011