수색…


통사론

  • 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::OneMy::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();


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow