문제

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';

둘 다! 언제나!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top