클래스 같은 것들을 모듈로 만들어 놓고 재사용할 수 있다. 아래와 같이 정의한다.
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 |