최고의 펄 패키지 및 모듈 튜토리얼 2024년, 이 튜토리얼에서는 BEGIN 및 END 모듈,펄 모듈은 무엇입니까?,필요 사용 및 기능,펄 모듈을 만들고,펄 모듈을 설치,를 배울 수 있습니다.
펄 각 패키지는 별도의 심볼 테이블 정의 구문은 다음과 같습니다
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
, END를 BEGIN : 펄 언어는 두 가지 키워드를 제공합니다. 그들은 실행 한 후 프로그램 실행이나 신체 전에 실행되는 스크립트에 별도의 설정이 될 수 있습니다.
다음 구문은 다음과 같습니다
BEGIN { ko. } END { ko. } BEGIN { ko. } END { ko. }
각 블록을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" );
우리는 패키지 이름 지정된 함수의 참조를 필요로하는 요구를 기록하고 사용하지 않아도, 둘 사이의 큰 차이점은 :
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";
그런 다음 실행 컴파일에 필요한 라이브러리 파일을 만들려면 "확인";
마지막 실행하여 전체 컴파일 과정을 종료, 시스템 디렉토리에 라이브러리 파일을 설치하려면 "설치 확인"; 테스트 결과가 정확 컴파일 "테스트하게"하였다.