본문 바로가기
Programming/Perl

Package

by NAMP 2009. 4. 23.

 

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

 

 

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    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);
    
    Output:
    1
    
    5 + 6 = 11
    5 * 6 = 30
    

 

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    $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";
    
    Output:
    1
    2
    
    100 
    100   
    200
    300
    100 200 300
    

 

Package 이란?

  • 같은 이름의 변수나 서브루틴을 구별
  • 서로의 구역을 나구고 그 구역안에서 각각의 일을 처리한다.
  • 하나의 파일에 복수의 Package  선언 가능
  • package PackageName;

 

Package 사용

  • 상이한 package 의 변수 또는 서브루틴 접근
  • print "$pack1::Number \n";

    &main::func();

 

Package의 효율성

  • namespace 문제를 해결

 

  1. 1
    2
    3
    4
    5
    6
    7
    8
    
    print __PACKAGE__ ."\n";
    {
            package Pack1;
            print __PACKAGE__ ."\n";
            package Pack2;
            print __PACKAGE__ ."\n";
    }
    print __PACKAGE__ ."\n";
    
    Output:

     

    1
    2
    
    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

댓글