Командный переключатель -w
включает предупреждения по всему миру для всего интерпретатора. С другой стороны, use warnings
является «лексической прагмой» и применяется только в лексической области, в которой он используется. Обычно вы помещаете это в верхнюю часть файла, чтобы оно применимо ко всему файлу, но вы также можете использовать его для определенных блоков. Кроме того, вы можете использовать no warnings
, чтобы временно отключить их внутри блока, в случаях, когда вам нужно выполнять поведение, порождающее предупреждения. Вы не можете этого сделать, если у вас есть -w
.
Подробнее о том, как работают лексические предупреждения, в том числе о том, как включать и выключать различные подмножества из них, см. Документ perllexwarn.
Ваша точка «без каких-либо предупреждений» является то, что я ожидал, но быстрый тест (perl -w -e «никаких предупреждений; print $ a;») показал, что, по крайней мере, на моем perl, «никаких предупреждений» все еще работает даже с -w. – 2008-10-21 22:55:06