mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Wednesday, August 23, 2006

펄 에러 설명] Global symbol '$foo' requires explicit package name at bar.pl line n


#!/usr/bin/perl
use strict;

$foo = 123;

print $foo;


가령 위의 펄 스크립트를 실행시키면
Global symbol "$foo" requires explicit package name at D:\Z\0.pl line 4.
Global symbol "$foo" requires explicit package name at D:\Z\0.pl line 6.
Execution of D:\Z\0.pl aborted due to compilation errors.

이런 에러가 나게 됩니다.

쉽게 말해서, 변수를 선언하지 않고 사용했다는 에러입니다.


다음과 같이 변수 $foo 앞에 my 를 붙여서 선언을 하면
#!/usr/bin/perl
use strict;

my $foo = 123;

print $foo;


에러가 나지 않습니다.

또는 use strict; 라는 프라그마를 지우면 에러가 없어집니다. 그렇지만 use strict; 를 항상 사용하는 것이 좋습니다. use strict; 를 사용하지 않으면 나중에 디버깅할 때 고생하게 됩니다.



물론 더 정확하게 말하자면,
Global symbol "$foo" requires explicit package name at D:\Z\0.pl line 4.

라는 것은, "전역 변수 $foo가 속한 패키지 이름을 정확히 지정해 주지 않았다"는 뜻입니다.

만약 여기서 예로 든 변수 $foo 가, 여러분이 현재의 펄 스크립트 안에서 만든 변수가 아니라, 어떤 다른 패키지(모듈) 속에서 선언된 변수라면 그 패키지를 알려주어야 합니다.


가령 Wasabi 라는 외부 모듈 속의 $foo 라는 변수를 사용하려면
#!/usr/bin/perl
use strict;

$Wasabi::foo = "안녕하세요";

print $Wasabi::foo;

이렇게 합니다.




tag: perl
Perl | 펄

1 Comments:
At November 25, 2014 at 9:42 AM, Blogger 윤님 said...

아아...감사합니다.
엄청 헤맸네요;;

 

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top