본문 바로가기

Script/Perl

17. Module

 
클래스 같은 것들을 모듈로 만들어 놓고 재사용할 수 있다. 아래와 같이 정의한다.
 
C:\foo\bar\baz\Demo\StringUtils.pm 
 
use strict;
use warnings;
 
sub zombify {
    my $word = shift @_ ;
    $word =~ s/[aeiou]/r/g;
    return $word ;
}
 
return 1;
 
- 모듈이란 .pm 확장자를 가진 파일로 다른 펄 파일에 포함되는 파일을 말한다.
 
- 모듈은 .pl 펄 스크립트와 완전히 똑같은 구문을 가진 텍스트 파일이다.
 
- 모듈은 로드될 때 위에서부터 아래로 실행하기 때문에 마지막에 성공했음을 알리기 위해 true 를 반환해야 한다.
 
- 펄 인터프리터가 모듈을 찾을 수 있도록 모듈을 포함하고 있는 디렉터리는 PER5LIB 환경변수에 들어가 있어야 한다.
 
  아래와 같이 필요한 디렉터리를 등록한다.
 
    C:\foo\bar\baz\Demo\StringUtils.pm        
 
    set PERL5LIB=C:\foo\bar\baz;%PERL5LIB%
 
- 펄 모듈을 만들었고 , 위처럼 PER5LIB 환경변수에 이 위치를 포함시켰다면
  require 함수를 통해 모듈을 포함시킬 수 있다.  
 
use strict;
use warnings;
 
require Demo::StringUtils; #여기서 :: 를 디렉터리 접근자로 사용했음에 주의하면 된다.
 
print zombify( "i want brains");
 
- 여기서 문제가 생긴다. 만약 main.pl 에 require 문이 여러개 있고, 각각의 모듈에도 require 가 있다면 원래의 zombify 루틴이
 
  어디에 있는지 찾아내기 점점 힘들어진다.
 
- 이름 충돌이 날 수 있다.
 
- 위 두 가지 문제를 해결하기 위해 Package 를 쓴다. 
 
 
 
 
 

'Script > Perl' 카테고리의 다른 글

19. File  (0) 2020.01.21
18. Package  (0) 2020.01.21
15. Regular Expression 1 - 기본  (0) 2020.01.21
14. Class  (0) 2020.01.21
13. Sub Routine  (0) 2020.01.21