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

 
Previous Post VMware Tools 사용법 설명플로피 디스크(디스켓)를 이미지 파일(.ima)로 만들기/저장 - Floppy ImageC언어/C++에서, 기호 // 또는 /* */ 는 무엇입니까? C언어 주석 기호는?엑셀 Excel 실수를 반올림하여 정수로; 소수점 특정 자리에서 반올림하는 함수; ROUN...VMware(가상피씨)의 속도가 빠른가요? 속도가 너무 느릴 때 해결법은?Perl] 펄 함수의 $_[0], $_[1], shift @_ 의 의미는? 서브루틴 파라미...[Perl/펄] 배열(Array)에서, 최소값(Min) 최대값(Max) 구하기Cygwin(시그윈)에서, more 명령을 less 로 교체 - 앨리어스(alias)를 사...[Perl/펄] 소수점 몇 째 자리에서, 엑셀 스타일 반올림 함수 - RoundXLC언어 기초] 소수점 반올림 함수; Round To Int, roundToInt()

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

Wednesday, August 23, 2006

#!/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;

이렇게 합니다.




☞ Perl

1 Comments:
At 9:42 AM, Blogger 윤님 said...

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

 

Post a Comment

<< Home RSS 2.0 feed

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