Pada intinya, ekstensi file yang Anda gunakan tidak membuat perbedaan tentang bagaimana perl
menafsirkan file-file itu.
Namun, meletakkan modul dalam .pm
file mengikuti struktur direktori tertentu yang mengikuti nama paket memberikan kemudahan. Jadi, jika Anda memiliki modul Example::Plot::FourD
dan Anda meletakkannya di direktori Example/Plot/FourD.pm
di jalur di Anda @INC
, maka use
dan require
akan melakukan hal yang benar ketika diberi nama paket seperti di use Example::Plot::FourD
.
File tersebut harus mengembalikan true sebagai pernyataan terakhir untuk menunjukkan keberhasilan eksekusi kode inisialisasi apa pun, jadi biasanya untuk mengakhiri file seperti itu dengan 1;
kecuali Anda yakin itu akan mengembalikan true sebaliknya. Tetapi lebih baik hanya meletakkan 1;
, jika Anda menambahkan lebih banyak pernyataan.
Jika EXPR
bareword, anggaplah require
ekstensi ".pm" dan ganti "::" dengan "/" di nama file Anda, untuk memudahkan memuat modul standar. Bentuk pemuatan modul ini tidak berisiko mengubah namespace Anda.
Yang perlu use
dilakukan hanyalah mencari nama file dari nama paket yang disediakan, require
dalam BEGIN
blok dan memanggil import
paket. Tidak ada yang mencegah Anda untuk tidak menggunakan use
selain mengambil langkah-langkah itu secara manual.
Misalnya, di bawah ini saya meletakkan Example::Plot::FourD
paket dalam sebuah file bernama t.pl
, memuatnya dalam sebuah skrip dalam file s.pl
.
C:\Temp> cat t.pl
package Example::Plot::FourD;
use strict; use warnings;
sub new { bless {} => shift }
sub something { print "something\n" }
"Example::Plot::FourD"
C:\Temp> cat s.pl
use strict; use warnings;
BEGIN {
require 't.pl';
}
my $p = Example::Plot::FourD->new;
$p->something;
C:\Temp> s
something
Contoh ini menunjukkan bahwa file modul tidak harus diakhiri 1
, nilai true apa pun akan dilakukan.
1
tidak apa-apa. Bisa2
, bisa"foo"
, bisa["a", "list"]
. Yang penting adalah tidak0
, atau apa pun yang dinilai salah, atauuse
akan gagal.