pp - PAR Packager
Lexical Scoping
- Code Block { } 안에 있는 영역을 의미
- 각각의 서브루틴도 Lexical 영역에 해당된다.
Package
- Package 는 변수의 영역을 나주지 않음
- 단순한 Namespace를 나눔.
변수의 종류
-
Lexical variable
- 변수의 범위 : 변수가 선언된 Lexical 영역의 내부
- my 를 붙여서 기술한 변수
- my $my_var;
-
Global variable
- 변수의 범위 : 모든 Lexical 영역
- 기본적인 변수, our를 붙여서 기술한 변수
- our $our_var;
-
Local variable
- 변수의 범위 : 변수가 선언된 Lexical 영역의 내부와 호출된 Lexcial 영역 내부
- local 을 붙여서 기술한 변수
- local $local_var
-
sub func{ print "$_[0] + $_[1] = ".($_[0]+$_[1])."\n"; } package pack1; sub func{ print "$_[0] * $_[1] = ".($_[0]* $_[1])."\n"; } package pack2; main::func(5,6); pack1::func(5,6);
5 + 6 = 11 5 * 6 = 30
-
$num=100; print "$num \n"; print "$main::num $pack1::num $pack2::num \n"; package pack1; $num=200; print "$num\n"; package pack2; $num=300; print "$num\n"; print "$main::num $pack1::num $pack2::num \n";
100 100 200 300 100 200 300
Package 이란?
- 같은 이름의 변수나 서브루틴을 구별
- 서로의 구역을 나구고 그 구역안에서 각각의 일을 처리한다.
- 하나의 파일에 복수의 Package 선언 가능
- package PackageName;
Package 사용
- 상이한 package 의 변수 또는 서브루틴 접근
-
print "$pack1::Number \n";
&main::func();
Package의 효율성
- namespace 문제를 해결
-
print __PACKAGE__ ."\n"; { package Pack1; print __PACKAGE__ ."\n"; package Pack2; print __PACKAGE__ ."\n"; } print __PACKAGE__ ."\n";
main Pack1 Pack2 main
이 글은 스프링노트에서 작성되었습니다.
'Programming > Perl' 카테고리의 다른 글
perl underground 1-2 (0) | 2009.05.01 |
---|---|
perl underground 1-1 (0) | 2009.04.30 |
OOP&Libraray&Module (0) | 2009.04.23 |
Perl 파일 다루기 (0) | 2009.04.23 |
do (0) | 2009.04.10 |
댓글