Perl Language
패키지 및 모듈
수색…
통사론
- require Module :: Name; # @INC의 이름으로 이름 지정
- require "path / to / file.pm"; # @INC의 상대 경로 필요
- 모듈 :: 이름을 사용하십시오; # require 및 BEGIN에서 기본 가져 오기
- Module :: Name ();을 사용하십시오. # 필요하고 BEGIN에서 가져 오기가 없습니다.
- Module :: Name (@ARGS);을 사용하십시오. # BEGIN에서 args를 사용하여 가져오고 가져 오기
- Module :: Name VERSION을 사용하십시오; # 필요, 버전 확인 및 BEGIN의 기본 가져 오기
- Module :: Name VERSION ();을 사용하십시오. # 필요, 버전 확인 및 BEGIN에서 가져 오기 없음
- Module :: Name VERSION (@ARGS);을 사용하십시오. # require, version check, BEGIN에서 args로 가져 오기
- do / path / to / file.pl "; # 주어진 파일을로드하고 평가한다.
다른 파일의 내용 실행하기
do './config.pl';
그러면 config.pl 파일의 내용을 읽고 실행합니다. ( perldoc -f do
참고하십시오.)
NB : 피 do
오류 검사가 없기 때문에 골프라도하지 않는 한. 라이브러리 모듈을 포함하려면 require
또는 use
.
런타임시 모듈로드
require Exporter;
이렇게하면 아직 가져 오기되지 않은 경우 Exporter
모듈이 런타임에로드됩니다. ( perldoc -f require
참조하십시오.)
주의 : 대부분의 사용자는 모듈을 사용해야 use
것이 아니라 모듈을 require
합니다. use
와 달리 require
는 모듈의 import 메소드를 호출하지 않으며 컴파일 중에이 아니라 런타임에 실행됩니다.
이 모듈로드 방법은 플러그인 시스템과 같이 런타임 전에 필요한 모듈을 결정할 수없는 경우에 유용합니다.
package My::Module;
my @plugins = qw( One Two );
foreach my $plugin (@plugins) {
my $module = __PACKAGE__ . "::Plugins::$plugin";
$module =~ s!::!/!g;
require "$module.pm";
}
이렇게하면 My::Package::Plugins::One
과 My::Package::Plugins::Two
됩니다. @plugins
는 물론 사용자 입력이나 설정 파일에서 @plugins
합니다. 각 쌍의 콜론을 슬래시로 대체하는 대입 연산자 s!::!/!g
주목하십시오. 이는 익숙한 모듈 이름 구문을 use
하여 모듈 이름을 베어 메드 (bareword)로만 use
수 있기 때문에 모듈을로드 할 수 있기 때문입니다. 문자열 또는 변수를 전달하면 파일 이름이 포함되어야합니다.
모듈 사용하기
use Cwd;
이렇게하면 컴파일 타임에 Cwd
모듈을 가져오고 기본 심볼을 가져옵니다. 즉, 모듈의 변수 및 함수 중 일부를 사용하여 코드에서 사용할 수 있도록합니다. ( perldoc -f use
도 참조하십시오.)
일반적으로 이것은 올바른 일을 할 것입니다. 그러나 때로는 가져올 기호를 제어해야 할 수 있습니다. 내보낼 모듈 이름 다음에 기호 목록을 추가하십시오.
use Cwd 'abs_path';
이렇게하면 지정한 기호 만 가져옵니다 (즉, 기본 세트는 가져 오지 않음).
여러 기호를 가져올 때 qw()
목록 작성 구문을 사용하는 것은 관용적입니다.
use Cwd qw(abs_path realpath);
일부 모듈은 기호의 하위 집합을 내 보냅니다. 그러나 :all
하여 모든 것을 내보내도록 지시 할 수 있습니다 :all
:
use Benchmark ':all';
모든 모듈이 :all
태그를 인식하거나 사용하는 것은 아닙니다.
디렉토리 내에서 모듈 사용하기
use lib 'includes';
use MySuperCoolModule;
use lib 'includes';
includes/
@INC
상대 디렉토리 includes/
를 다른 모듈 검색 경로로 추가합니다. 따라서 MySyperCoolModule.pm
includes/
안에 모듈 파일 MySyperCoolModule.pm
있고 다음을 includes/
한다고 가정하십시오.
package MySuperCoolModule;
원한다면 하나의 디렉토리에 자신의 모듈을 그룹화하고 하나의 use lib
문을 use lib
하여 찾을 수있게 만들 수 있습니다.
이 시점에서 모듈의 서브 루틴을 사용하려면 서브 루틴 이름 앞에 패키지 이름을 붙여야합니다.
MySuperCoolModule::SuperCoolSub_1("Super Cool String");
접두어없이 서브 루틴을 사용할 수 있으려면 서브 루틴 이름을 호출하여 호출하는 프로그램에서 인식되도록해야합니다. 내보내기는 자동으로 설정할 수 있으므로 다음과 같이 할 수 있습니다.
package MySuperCoolModule;
use base 'Exporter';
our @EXPORT = ('SuperCoolSub_1', 'SuperCoolSub_2');
그런 다음 모듈을 use
하는 파일에서 해당 서브 루틴이 자동으로 사용 가능하게됩니다.
use MySuperCoolModule;
SuperCoolSub_1("Super Cool String");
또는 조건부로 서브 루틴을 내보내기위한 모듈을 설정할 수 있습니다.
package MySuperCoolModule;
use base 'Exporter';
our @EXPORT_OK = ('SuperCoolSub_1', 'SuperCoolSub_2');
이 경우 모듈을 use
하는 스크립트에서 내보낼 원하는 서브 루틴을 명시 적으로 요청해야합니다.
use MySuperCoolModule 'SuperCoolSub_1';
SuperCoolSub_1("Super Cool String");
CPAN.pm
CPAN.pm
은 CPAN 사이트에서 모듈을 쿼리하고 설치할 수있는 Perl 모듈입니다.
호출 된 대화식 모드를 지원합니다.
cpan
또는
perl -MCPAN -e shell
모듈 쿼리하기
이름으로:
cpan> m MooseX::YAML
모듈 이름에 대한 정규식 :
cpan> m /^XML::/
주 : 호출기를 사용 가능하게하거나 파일로 방향 재 지정하려면 |
또는 >
셸 리디렉션 ( |
및 >
주위에 공백이 있어야합니다. 예 : m /^XML::/ | less
.
배포 방식 :
cpan> d LMC/Net-Squid-Auth-Engine-0.04.tar.gz
모듈 설치
이름으로:
cpan> install MooseX::YAML
배포 방식 :
cpan> install LMC/Net-Squid-Auth-Engine-0.04.tar.gz
설치된 모든 모듈 나열
명령 줄에서 :
cpan -l
Perl 스크립트에서 :
use ExtUtils::Installed;
my $inst = ExtUtils::Installed->new();
my @modules = $inst->modules();