명령 줄 스위치 또는 Pragma로 Perl 경고를 켜야합니까?
문제
Perl 스크립트를 시작하기위한 아래 두 가지 예 사이에 차이가 있습니까? 그렇다면 언제 다른 하나를 사용합니까?
example 1:
#!/usr/bin/perl
use warnings;
example 2:
#!/usr/bin/perl -w
해결책
스위치를 사용하면 모든 경고가 가능합니다 모두 프로그램에서 사용하는 모듈. Pragma를 사용하면 해당 특정 모듈 (또는 스크립트)에서만 활성화됩니다. 이상적으로는 모든 모듈에서 경고를 사용하지만 종종 그렇지 않습니다. 스위치를 사용하면 경고가없는 제 3 자 모듈을 사용할 때 많은 경고를받을 수 있습니다.
따라서 이상적으로는 중요하지 않지만 실용적으로 최종 사용자가 스위치를 사용하지 않고 Pragma를 사용하는 것이 종종 바람직합니다.
다른 팁
그만큼 -w
명령 줄 스위치는 전체 통역사에 대한 전 세계적으로 경고를 켭니다. 반면에, use warnings
"어휘 pragma"이며 사용되는 어휘 범위로만 적용됩니다. 일반적으로 파일의 상단에 전체 파일에 적용되지만 특정 블록으로 범위를 범할 수도 있습니다. 또한 사용할 수 있습니다 no warnings
경고 생성 동작을 수행 해야하는 경우 블록 내부에서 일시적으로 끄는 경우. 당신이 가지고 있다면 그렇게 할 수 없습니다 -w
에.
다양한 하위 집합을 켜고 끄는 방법을 포함하여 어휘 경고의 작동 방식에 대한 자세한 내용은 perllexwarn 문서.
"-w"는 나이가 많고 경고를 켜는 유일한 방법이었습니다 (실제로 "-w"는 Global $^w 변수를 가능하게합니다). "경고 사용;" (이미 언급했듯이) 글로벌 범위 대신 어휘가 있고 특정 경고를 켜거나 끌 수 있기 때문에 (이미 언급 한 바와 같이) 이제는 바람직합니다 (이미 언급 한 바와 같이). 그리고 "Strict 사용"으로 시작하는 것을 잊지 마십시오. :-)
주목할만한 또 다른 차이점은 "사용 경고"Pragma를 사용하면 구체적인 경고를 선택할 수 있다는 것입니다.
Pragma를 사용하여 특정 주장을 활성화/비활성화하는 것 외에도 오류에 대한 일부 또는 모든 경고를 홍보 할 수도 있습니다.
use strict;
use warnings FATAL => 'all', NONFATAL => 'exec';
둘 다! 언제나!