Setiap paket di Perl memiliki tabel simbol terpisah, dan sintaks definisinya adalah:
paket paket saya;
Pernyataan ini mendefinisikan sebuah paket bernama mypack . Nama semua variabel dan subrutin yang ditentukan setelahnya disimpan dalam tabel simbol yang terkait dengan paket tersebut hingga pernyataan paket lain ditemukan.
Setiap tabel simbol memiliki kumpulan nama variabel dan subrutinnya sendiri. Setiap kumpulan nama tidak berhubungan, sehingga nama variabel yang sama dapat digunakan dalam paket berbeda untuk mewakili variabel berbeda.
Untuk mengakses variabel paket lain dari satu paket, Anda dapat menentukannya dengan "nama paket + titik dua (::) + nama variabel".
Tabel simbol default yang menyimpan nama variabel dan subrutin dikaitkan dengan paket bernama main . Jika paket lain ditentukan dalam program dan Anda ingin beralih kembali menggunakan tabel simbol default, Anda dapat menentukan ulang paket utama:paket utama;
Dengan cara ini, program berikut akan bertindak seolah-olah paket tersebut belum pernah didefinisikan, dan nama variabel serta subrutin disimpan seperti biasa.
File dalam contoh berikut adalah paket main dan Foo. Variabel khusus __PACKAGE__ digunakan untuk menampilkan nama paket:
Dengan mengeksekusi program di atas, hasil keluarannya adalah:
Nama paket: main 1 Nama paket: Foo 10 Nama paket: main 100 Nama paket: main 10
Bahasa Perl menyediakan dua kata kunci: BEGIN dan END. Masing-masing dapat berisi sekumpulan skrip untuk dieksekusi sebelum atau sesudah badan program dijalankan.
Format sintaksnya adalah sebagai berikut:
MULAI { ... }AKHIR { ... }MULAI { ... }AKHIR { ... }
Setiap modul BEGIN dieksekusi setelah skrip Perl dimuat dan dikompilasi tetapi sebelum pernyataan lain dieksekusi.
Setiap blok pernyataan END dieksekusi sebelum interpreter keluar.
Blok pernyataan BEGIN dan END sangat berguna saat membuat modul Perl.
Jika masih belum paham, kita bisa lihat contohnya:
Dengan mengeksekusi program di atas, hasil keluarannya adalah:
Ini adalah blok pernyataan BEGIN. Ini adalah blok pernyataan END.
Di Perl5, paket Perl digunakan untuk membuat modul.
Modul Perl adalah paket yang dapat digunakan kembali. Nama modul sama dengan nama paket, dan akhiran file yang ditentukan adalah .pm .
Di bawah ini kita mendefinisikan modul Foo.pm, kodenya sebagai berikut:
Ada beberapa hal yang perlu diperhatikan tentang modul di Perl:
Fungsi require dan use akan memuat modul.
@INC adalah array khusus yang dibangun ke dalam Perl yang berisi jalur direktori ke lokasi rutinitas perpustakaan.
Fungsi require dan use memanggil fungsi eval untuk mengeksekusi kode.
1 di akhir; eksekusi mengembalikan TRUE, yang diperlukan, jika tidak, kesalahan akan dikembalikan.
Modul dapat dipanggil melalui fungsi require , seperti yang ditunjukkan di bawah ini:
Itu juga dapat direferensikan melalui fungsi penggunaan:
Kami memperhatikan bahwa referensi yang diperlukan perlu menggunakan nama paket untuk menentukan fungsinya, tetapi referensi penggunaan tidak. Perbedaan utama antara keduanya adalah:
1. require digunakan untuk memuat modul atau program Perl (akhiran .pm dapat dihilangkan, tetapi .pl harus ada)
2. Pernyataan penggunaan Perl diperkenalkan pada waktu kompilasi, dan persyaratan diperkenalkan pada waktu proses.
3. Saat penggunaan Perl memperkenalkan sebuah modul, ia juga memperkenalkan submodul dari modul tersebut. Namun, persyaratan tidak dapat diperkenalkan dan harus dideklarasikan ulang
4. USE dicari di @INC default saat ini. Setelah modul tidak ada di @INC, modul tidak dapat diperkenalkan menggunakan USE, tetapi require dapat menentukan jalurnya.
5. Ketika USE mengacu pada sebuah modul, jika nama modul berisi :: titik dua ganda, titik dua ganda akan digunakan sebagai pemisah jalur, yang setara dengan / di Unix atau di Windows. menyukai:
gunakan MyDirectory::MyModule
Simbol daftar dapat diekspor dari modul use dengan menambahkan pernyataan berikut:
memerlukan Eksportir;@ISA = qw(Ekspor);
Array @EXPORT berisi nama variabel dan fungsi yang diekspor secara default:
paket Modul;memerlukan Eksportir;@ISA = qw(Eksportir);@EKSPOR = qw(bar blat); #Simbol yang diekspor default sub bar { print "Halo $_[0]n" }sub blat { print "Dunia $ _ [0]n" }sub splat { print "Bukan $_[0]n" } # Tidak diekspor!1;
Sangat mudah untuk membuat modul Perl melalui alat h2xs yang disertakan dengan distribusi Perl.
Anda dapat mengetik h2xs dalam mode baris perintah untuk melihat daftar parameternya.
format sintaks h2xs:
$ h2xs -AX -n Nama Modul
Deskripsi parameter:
-A mengabaikan mekanisme autoload
-X abaikan elemen XS
-n menentukan nama modul ekstensi
Misalnya, jika modul Anda ada di file Person.pm , gunakan perintah berikut:
$ h2xs -AX -n Orang
Menjalankan program di atas akan menampilkan:
Orang Penulis/lib/Person.pmWriting Person/Makefile.PLWriting Person/READMEWriting Person/t/Person.tWriting Person/ChangesWriting Person/MANIFEST
Di bawah direktori Person, Anda dapat melihat direktori dan deskripsi file yang baru ditambahkan:
README: File ini berisi beberapa informasi instalasi, ketergantungan modul, informasi hak cipta, dll.
Perubahan: File ini berfungsi sebagai file changelog untuk proyek Anda.
Makefile.PL: Ini adalah konstruktor Perl Makefile standar. Digunakan untuk membuat file Makefile.PL untuk mengkompilasi modul.
MANIFEST: File ini digunakan untuk secara otomatis membangun distribusi versi modul tipe tar.gz. Dengan cara ini, Anda dapat membawa modul Anda ke CPAN dan mempublikasikannya atau mendistribusikannya ke orang lain. Ini berisi daftar semua file yang Anda miliki dalam proyek ini.
Person.pm: Ini adalah file modul utama yang berisi kode pengendali mod_perl Anda.
Person.t: Beberapa skrip pengujian untuk modul ini. Secara default, ini hanya memeriksa pemuatan modul, Anda dapat menambahkan beberapa unit pengujian baru.
t/: file uji
lib/: direktori tempat kode sumber sebenarnya disimpan
Anda dapat menggunakan perintah tar (di Linux) untuk mengemas direktori di atas ke dalam Person.tar.gz.
Kita bisa mendekompresi dan menginstall file Person.tar.gz yang baru saja kita kompres. Langkah-langkahnya sebagai berikut:
tar xvfz Person.tar.gzcd Personperl Makefile.PLmakemake instal
Pertama jalankan "perl Makefile.PL" untuk menghasilkan Makefile di direktori saat ini;
Kemudian jalankan "make" untuk mengkompilasi dan membuat file perpustakaan yang diperlukan;
Kemudian gunakan "make test" untuk menguji apakah hasil kompilasi sudah benar, terakhir jalankan "make install" untuk menginstal file perpustakaan ke direktori sistem, dan seluruh proses kompilasi berakhir.