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