С perl я почти всегда использую:
use strict;
use diagnostics;
Я предложил "использовать диагностику" вместо use warnings; здесь, и я получил некоторую отрицательную обратную связь. Итак, теперь я думаю:
Есть ли проблема с use diagnostics;?
С perl я почти всегда использую:
use strict;
use diagnostics;
Я предложил "использовать диагностику" вместо use warnings; здесь, и я получил некоторую отрицательную обратную связь. Итак, теперь я думаю:
Есть ли проблема с use diagnostics;?
diagnostics не является лексической прагмой, подобной warnings. Вместо этого он устанавливает глобальную переменную $^W (например, используя флаг -w), который позволяет предупреждать обо всех кодах, хочет он это или нет, и писал ли вы это или нет. Это грубо. diagnostics также глупо использовать в производстве. Я бы порекомендовал использовать warnings, а затем просто передал ваши предупреждения на splain, если вам нужно объяснение.
use diagnostics замедлит выполнение вашего кода больше, чем use warnings. Это нормально, если вы получаете предупреждение, которое не понимаете во время разработки, но лучше всего отключить его, когда закончите.
Диагностика pragma - это инструмент разработки, который вам не нужен часто. Используйте его по мере необходимости:
$ perl -Mdiagnostics myprog
Включение прагмы в командной строке -M switch означает, что вам не нужно забывать возвращаться и удалять тестовую версию, только use diagnostics от вашего кода.
Если вы еще не обновили версию perl версии 5.12, диагностика имеет ошибку, которая маскирует конкретное предупреждение. Исправлена ошибка в 5.12 (см. perl512delta):
диагностика больше не подавляется неинициализированного значения в диапазоне (или флип). [perl # 71204]
Как только я узнал об ошибке, я вернулся и прокомментировал use diagnostics; из всего моего кода. Если я получаю предупреждающие сообщения, я раскомментирую их временно, но всегда возвращаюсь назад и прокомментирую это снова.