Latest web development tutorials

펄 패키지 및 모듈

펄 각 패키지는 별도의 심볼 테이블 정의 구문은 다음과 같습니다

package mypack;

이 문장은 패키지와 관련된 심볼 테이블에 저장되어 이후에 정의 된 모든 변수 및 서브 루틴의 이름mypack 불리는 패키지를 정의 할 때까지, 패키지가원경 다른 명령문을 발견.

각각의 심볼 테이블 변수, 서브 루틴의 자신의 세트를 가지고, 각 그룹 이름은 관련이 없습니다, 그래서 당신은 다른 변수를 나타내는 다른 패키지에 같은 변수 이름을 사용할 수 있습니다.

다른 패키지의 변수를 하나의 패키지에서 액세스, 당신은 "패키지 이름 + 더블 콜론 (: :) + 변수 이름"을 지정할 수 있습니다 접근 방식을.

패키지와 관련된 저장 변수와 서브 루틴 이름 기본 심볼 테이블메인 링크라고합니다.프로그램이 다른 패키지에 정의 된 경우 기본 심볼 테이블을 사용하여 전환하고자 할 때, 당신은 메인 패키지를 다시 할당 할 수 있습니다 :

package main;

따라서, 같은 다음 프로그램 패키지, 변수 및 일반적인 스토리지와 같은 서브 루틴 이름을 정의하지 않을 경우.

다음 예제 파일은 주와 푸 패키지가 있습니다.__PACKAGE__ 출력 패키지 이름에 대한 특별 변수 :

#!/usr/bin/perl

#  main 包
$i = 1; 
print "包名 : " , __PACKAGE__ , " $i\n"; 

package Foo;
#  Foo 包
$i = 10; 
print "包名 : " , __PACKAGE__ , " $i\n"; 

package main;
# 重新指定 main 包
$i = 100; 
print "包名 : " , __PACKAGE__ , " $i\n"; 
print "包名: " , __PACKAGE__ ,  " $Foo::i\n"; 

1;

위의 프로그램은 출력은 다음과 같습니다

包名 : main 1
包名 : Foo 10
包名 : main 100
包名: main 10

BEGIN 및 END 모듈

, END를 BEGIN : 펄 언어는 두 가지 키워드를 제공합니다. 그들은 실행 한 후 프로그램 실행이나 신체 전에 실행되는 스크립트에 별도의 설정이 될 수 있습니다.

다음 구문은 다음과 같습니다

BEGIN { ... }
END { ... }
BEGIN { ... }
END { ... }
  • 각 블록을BEGIN하지만,로드 및 컴파일 된 Perl 스크립트 후에 실행 다른 문 전에 실행.

  • 인터프리터가 종료하기 전에 문장의 각END 블록이 실행.

  • BEGIN 당신은 펄 모듈을 만들 때 END 블록은특히 유용하다.

당신이 큰 이해하지 않으면, 우리는 인스턴스를 볼 수 있습니다

#!/usr/bin/perl

package Foo;
print "Begin 和 Block 实例\n";

BEGIN { 
    print "这是 BEGIN 语句块\n" 
}

END { 
    print "这是 END 语句块\n" 
}

1;

위의 프로그램은 출력은 다음과 같습니다

这是 BEGIN 语句块
Begin 和 Block 实例
这是 END 语句块

펄 모듈은 무엇입니까?

펄 패키지 perl5의는 모듈을 만들 수 있습니다.

펄 모듈은 재사용 가능한 패키지, 모듈 이름과 같은 패키지이름,가 .pm에 정의 된 파일 확장자입니다.

우리는 모듈 Foo.pm을 정의 아래 코드는 다음과 같습니다 :

#!/usr/bin/perl

package Foo;
sub bar { 
   print "Hello $_[0]\n" 
}

sub blat { 
   print "World $_[0]\n" 
}
1;

펄은 다음을 참조 할 우려스러운 모듈 :

  • 기능 및사용은로드 모듈이 필요합니다.

  • @INC 펄 라이브러리 루틴의 위치 디렉토리 경로 거짓말 포함하는 특수 내장 배열이다.

  • 필요로 이용함수의 코드를 실행하는평가함수를 호출한다.

  • 1 종료, 실행이 필수입니다, TRUE를 반환, 그렇지 않으면 오류를 반환합니다.


필요 사용 및 기능

다음과 같이 모듈은필요 함수를 호출 할 수 있습니다 :

#!/usr/bin/perl

require Foo;

Foo::bar( "a" );
Foo::blat( "b" );

또한 참조하는 기능을 사용할 수 있습니다 :

<pre>
#!/usr/bin/perl

use Foo;

bar( "a" );
blat( "b" );

우리는 패키지 이름 지정된 함수의 참조를 필요로하는 요구를 기록하고 사용하지 않아도, 둘 사이의 큰 차이점은 :

  • 1 펄 모듈이나 프로그램을로드하기 위해 (가 .pm 접미사를 생략 할 수 있지만,이 .pl로 함) 필요
  • 도입시 2 펄 사용 문 도입 실행을 필요로 컴파일
  • 3 펄 모듈의 도입뿐만 아니라, 서브 모듈 모듈의 도입을 사용한다. 그리고는 다시 문에 대한 소개가 필요 없습니다
  • 4, 사용은 사용이 도입되지와 모듈이 @INC 낱말하지되면, 내부의 현재 기본 @INC를보고 있지만 지정된 경로를 요구할 수있다
  • 5, 사용 참조 모듈은 모듈 이름이 포함 된 경우 :: 더블 콜론, 콜론은 경로 분리, 유닉스의 등가 등 / 또는 Windows \ 아래에 두 배로됩니다. 예를 들면 :

    use MyDirectory::MyModule

당신은 모듈을 사용하는 다음 문을 추가하여 모듈에서 기호 목록을 내보낼 수 있습니다 :

require Exporter;
@ISA = qw(Exporter);

@EXPORT 배열 기본 변수와 이름에서 파생 된 기능을 포함 :

package Module;

require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(bar blat);  # 默认导出的符号

sub bar { print "Hello $_[0]\n" }
sub blat { print "World $_[0]\n" }
sub splat { print "Not $_[0]\n" }  # Not exported!

1;

펄 모듈을 만들고

당신은 쉽게 펄 분포가 도구 h2xs는 함께 제공되는 펄 모듈을 만들 수 있습니다.

당신은 모드 h2xs는이 매개 변수 목록을보고 명령 줄에 입력 할 수 있습니다.

h2xs는 구문 :

$ h2xs -AX -n  ModuleName

매개 변수 설명 :

  • -A 무시 자동로드 메커니즘

  • -X 무시 XS 요소

  • -n 확장자 이름을 지정합니다

예를 들어, 모듈Person.pm 파일 경우, 다음 명령을 사용합니다 :

$ h2xs -AX -n Person

위의 프로그램 출력 할 것이다 :

Writing Person/lib/Person.pm
Writing Person/Makefile.PL
Writing Person/README
Writing Person/t/Person.t
Writing Person/Changes
Writing Person/MANIFEST

새로 추가 된 디렉토리 및 파일 설명을 볼 수있는 디렉토리 아래 담당자 :

  • README이 파일 등등 설치, 모듈 종속성, 저작권 정보 및 대한 정보가 포함되어 있습니다.

  • 변경 : 프로젝트 (변경 로그) 파일로이 변경 로그 파일.

  • Makefile.PL :이 표준 펄 메이크 빌더입니다. 모듈을 컴파일하는 Makefile.PL 파일을 생성하는 데 사용됩니다.

  • MANIFEST :이 파일은 자동으로 모듈 버전 분포의 tar.gz의 유형을 구축하는 데 사용됩니다. 당신이 당신의 CPAN 모듈을 넣을 수 있도록 게시하거나 다른 사람에게 배포하세요. 그것은이 프로젝트의 모든 파일의 목록이 포함되어 있습니다.

  • Person.pm :이은 mod_perl을 핸들러 (핸들러 코드)에 대한 코드를 포함하는 메인 모듈 파일이다.

  • Person.t : 일부 테스트 스크립트이 모듈. 기본적으로, 그냥 모듈이로드 확인, 당신은 몇 가지 새로운 테스트 유닛을 추가 할 수 있습니다.

  • t / : 테스트 파일

  • LIB / : 실제 소스 저장 디렉터리

당신은 Person.tar.gz로 패키지 위의 디렉토리에 타르 (리눅스) 명령을 사용할 수 있습니다.


펄 모듈을 설치

우리는 단지Person.tar.gz 다음 단계를 수행하여 설치를 압축 해제 파일을 압축 할 수 있습니다 :

tar xvfz Person.tar.gz
cd Person
perl Makefile.PL
make
make install

Makefile을 생성 현재 디렉토리에 우선 실행 "펄 Makefile.PL";

그런 다음 실행 컴파일에 필요한 라이브러리 파일을 만들려면 "확인";

마지막 실행하여 전체 컴파일 과정을 종료, 시스템 디렉토리에 라이브러리 파일을 설치하려면 "설치 확인"; 테스트 결과가 정확 컴파일 "테스트하게"하였다.