2025-02-10T05:29:29
This commit is contained in:
68
docs/17_module.md
Normal file
68
docs/17_module.md
Normal file
@@ -0,0 +1,68 @@
|
||||
# 모듈
|
||||
|
||||
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;
|
||||
```
|
||||
Reference in New Issue
Block a user