68 lines
1.4 KiB
Markdown
68 lines
1.4 KiB
Markdown
# 모듈
|
|
|
|
PERL의 모듈은 확장자로 __.pm__을 사용합니다.
|
|
|
|
모듈은 *package* 선언으로 시작됩니다.
|
|
|
|
```perl
|
|
package MyTest;
|
|
# MyTest.pm
|
|
use warnings;
|
|
use strict;
|
|
|
|
my $var = 1;
|
|
|
|
sub say_hello {
|
|
return "Hello";
|
|
}
|
|
1;
|
|
```
|
|
|
|
스크립트에서 다른 모듈을 사용하려면 `use`등을 사용해서 사용하려는 모듈을 선언해야 합니다.
|
|
|
|
```perl
|
|
#!/usr/bin/perl
|
|
use warnings;
|
|
use strict;
|
|
use lib '/home/elex/Workspace/perl-examples'; # @INC에 모듈의 경로를 알려주기 위해 사용되었습니다.
|
|
use MyTest; # 사용할 모듈을 불러온 다음,
|
|
|
|
$a = MyTest::say_hello(); # 모듈의 서브루틴을 호출합니다.
|
|
|
|
print "$a\n";
|
|
```
|
|
|
|
- do
|
|
|
|
`@INC`에 정의된 경로에서 모듈 파일을 찾고, 찾은 모듈을 삽입합니다.
|
|
|
|
- require
|
|
|
|
모듈을 한 번만 불러옵니다. 모듈을 찾지 못하면 오류가 표시됩니다.
|
|
|
|
- use
|
|
|
|
require와 비슷하지만, 프로그램 실행 전에 모듈을 불러옵니다. 대부분의 경우, use가 사용됩니다.
|
|
|
|
|
|
## BEGIN 블록과 END 블록
|
|
|
|
BEGIN 블록은 스크립트가 로딩된 직후에 다른 실행문이 실행되기 이전에 실행됩니다. END 블록은 스크립트가 실행을 마친 직후에 실행됩니다.
|
|
|
|
```perl
|
|
#!/usr/bin/perl
|
|
use strict;
|
|
|
|
package Foo;
|
|
|
|
sub hello {
|
|
print 'Hello.';
|
|
}
|
|
BEGIN {
|
|
print 'Begin..';
|
|
}
|
|
END {
|
|
print '..End.';
|
|
}
|
|
1;
|
|
``` |