paket perl dan modul
Perl Setiap paket memiliki tabel simbol sintaks definisi terpisah:
package mypack;
Pernyataan ini mendefinisikan sebuah paket bernamamypack atas nama semua variabel dan subrutin didefinisikan selanjutnya disimpan dalam tabel simbol yang terkait dengan paket, paketsampai bertemu pernyataan lain sejauh ini.
Setiap tabel simbol telah menetapkan sendiri variabel, subrutin, setiap nama grup tidak relevan, sehingga Anda dapat menggunakan nama variabel yang sama dalam paket yang berbeda, yang mewakili variabel yang berbeda.
Akses dari satu paket untuk variabel paket lain, Anda dapat menentukan "nama paket + usus ganda (: :) + nama variabel" pendekatan.
Menyimpan variabel dan nama subrutin tabel simbol standar yang terkait dengan paket disebutmain-linked.Jika program ini didefinisikan dalam paket lain, ketika Anda ingin beralih kembali menggunakan tabel simbol default, Anda dapat menetapkan kembali paket utama:package main;
Dengan demikian, program berikutnya seakan tidak pernah didefinisikan paket, variabel dan nama subrutin sebagai penyimpanan biasa.
Contoh berikut file memiliki utama dan Foo paket.__PACKAGE__ Variabel Khusus untuk nama paket keluaran:
#!/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;
Program di atas, output adalah:
包名 : main 1 包名 : Foo 10 包名 : main 100 包名: main 10
BEGIN dan modul END
bahasa perl memberikan dua kata kunci: BEGIN, END. Mereka bisa menjadi yang terpisah dari script yang dijalankan sebelum berjalan program atau badan setelah menjalankan.
Sintaks adalah sebagai berikut:
BEGIN { ... } END { ... } BEGIN { ... } END { ... }
SetiapBEGIN blok tapi dieksekusi sebelum laporan lainnya dijalankan setelah skrip Perl dimuat dan disusun.
Setiap blokEND pernyataan dieksekusi sebelum penafsir berhenti.
BEGIN dan blok ENDsangat berguna ketika Anda membuat modul Perl.
Jika Anda tidak mengerti besar, kita bisa melihat contoh:
#!/usr/bin/perl package Foo; print "Begin 和 Block 实例\n"; BEGIN { print "这是 BEGIN 语句块\n" } END { print "这是 END 语句块\n" } 1;
Program di atas, output adalah:
这是 BEGIN 语句块 Begin 和 Block 实例 这是 END 语句块
Apa adalah modul Perl?
Perl5 dengan paket Perl untuk membuat modul.
modul perl adalah paket dapat digunakan kembali, nama modul dan nama paket yang sama, ekstensi file yang ditetapkan untuk.pm.
Di bawah ini kami mendefinisikan Foo.pm modul, kode sebagai berikut:
#!/usr/bin/perl package Foo; sub bar { print "Hello $_[0]\n" } sub blat { print "World $_[0]\n" } 1;
Perl modul memprihatinkan untuk perhatikan hal berikut:
Fungsi danpenggunaan akan memerlukanmodul beban.
@ INC Perl adalah built-in array yang khusus yang berisi path direktori ke lokasi rutinitas perpustakaan terletak.
membutuhkan dan fungsi penggunaanpanggilan fungsievaluntuk mengeksekusi kode.
End1; eksekusi mengembalikan TRUE, ini adalah suatu keharusan, jika tidak maka kembali kesalahan.
Membutuhkan Penggunaan dan fungsi
Modul dapat dipanggil oleh fungsimemerlukan sebagai berikut:
#!/usr/bin/perl require Foo; Foo::bar( "a" ); Foo::blat( "b" );
Anda juga dapat menggunakan fungsi untuk merujuk kepada:
<pre> #!/usr/bin/perl use Foo; bar( "a" ); blat( "b" );
Kami mencatat kebutuhan untuk memerlukan referensi untuk paket nama tertentu fungsi, dan tidak perlu menggunakan, perbedaan utama antara keduanya adalah:
- 1, membutuhkan untuk memuat modul atau program perl (akhiran .pm dapat dihilangkan, tapi harus pl)
- 2, pernyataan penggunaan Perl dikompilasi ketika diperkenalkan, membutuhkan runtime diperkenalkan
- 3, Perl menggunakan pengenalan modul, tetapi juga pengenalan modul sub-modul. Dan itu tidak bisa memerlukan pengenalan re-pernyataan
- 4, USE adalah untuk melihat @ INC default saat ini di dalam, setelah modul tidak dalam kata-kata @ INC dengan USE tidak diperkenalkan, tetapi mungkin memerlukan jalan yang ditentukan
- 5, PENGGUNAAN direferensikan modul, jika nama modul berisi :: usus ganda, usus besar akan ganda sebagai pemisah jalan, setara dengan Unix / atau di bawah Windows \. Seperti:
use MyDirectory::MyModule
Anda dapat mengekspor daftar simbol dari modul dengan menambahkan pernyataan berikut untuk menggunakan modul:
require Exporter; @ISA = qw(Exporter);
@EXPORT Array mengandung variabel default dan fungsi berasal dari nama:
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;
Membuat modul Perl
Anda dapat dengan mudah membuat modul Perl distribusi Perl dilengkapi dengan alat h2xs.
Anda dapat mengetikkan baris perintah modus h2xs melihat daftar parameter.
sintaks h2xs:
$ h2xs -AX -n ModuleName
Parameter Deskripsi:
-A Mekanisme autoload Diabaikan
-X Diabaikan elemen XS
n Menentukan nama ekstensi
Sebagai contoh, jika filePerson.pm modul Anda, gunakan perintah berikut:
$ h2xs -AX -n Person
Di atas Output Program kehendak:
Writing Person/lib/Person.pm Writing Person/Makefile.PL Writing Person/README Writing Person/t/Person.t Writing Person/Changes Writing Person/MANIFEST
Orang di bawah direktori Anda dapat melihat direktori baru ditambahkan dan file Keterangan:
README: File ini berisi informasi tentang instalasi, modul dependensi, informasi hak cipta, dan sebagainya.
Perubahan: Perubahan ini file log sebagai proyek Anda (changelog) file.
Makefile.PL: ini adalah standar pembangun Perl Makefile. Digunakan untuk membuat file Makefile.PL untuk mengkompilasi modul.
MANIFEST: File ini digunakan untuk secara otomatis membangun jenis tar.gz distribusi versi modul. Sehingga Anda dapat menempatkan modul CPAN Anda untuk mendapatkan diterbitkan atau didistribusikan kepada orang lain. Ini berisi daftar semua file Anda dalam proyek ini.
Person.pm: Ini adalah file modul utama yang berisi kode untuk penangan mod_perl Anda (kode handler).
Person.t: untuk modul ini beberapa script tes. Secara default, itu hanya memeriksa modul dimuat, Anda dapat menambahkan beberapa unit uji baru.
t /: file tes
lib /: direktori penyimpanan sumber yang sebenarnya
Anda dapat menggunakan tar (Linux pada) perintah untuk direktori di atas dikemas sebagai Person.tar.gz.
Pasang modul Perl
Kami bisa sajaPerson.tar.gz file terkompresi untuk dekompresi instalasi, lakukan langkah-langkah berikut:
tar xvfz Person.tar.gz cd Person perl Makefile.PL make make install
menjalankan pertama "perl Makefile.PL" di direktori saat ini dihasilkan Makefile;
Kemudian jalankan "membuat" untuk mengkompilasi dan membuat file library yang diperlukan;
Diikuti dengan "membuat test" uji mengkompilasi hasilnya benar; jangka terakhir "make install" untuk menginstal file library ke direktori sistem, dengan demikian mengakhiri proses kompilasi seluruh.