diagnostics
не лексическая прагма, как warnings
. Вместо этого он устанавливает глобальную переменную $^W
(например, с использованием флага -w
), которая включает предупреждения для всего кода, независимо от того, хочет он этого или нет, и независимо от того, написали вы его или нет. Это довольно грубо. diagnostics
также глупо использовать в производстве. Я бы порекомендовал использовать warnings
, а затем просто передать ваши предупреждения на splain
, если вам нужно объяснение.