.pm
(Perl modülü) ve .pl
(Perl betiği) dosyası arasındaki fark nedir ?
Lütfen bana neden 1
dosyadan döndüğümüzü de söyleyin . Return 2 veya başka bir şey varsa, herhangi bir hata oluşturmuyorsa, neden 1
Perl modülünden dönüyoruz?
.pm
(Perl modülü) ve .pl
(Perl betiği) dosyası arasındaki fark nedir ?
Lütfen bana neden 1
dosyadan döndüğümüzü de söyleyin . Return 2 veya başka bir şey varsa, herhangi bir hata oluşturmuyorsa, neden 1
Perl modülünden dönüyoruz?
Yanıtlar:
Özünde, kullandığınız dosya uzantısı, perl
bu dosyaları nasıl yorumladığına dair hiçbir fark yaratmaz.
Ancak, .pm
paket adını izleyen belirli bir dizin yapısını takip eden dosyalara modüller koymak bir kolaylık sağlar. Yani, bir modül varsa Example::Plot::FourD
ve bir dizine koyun Example/Plot/FourD.pm
Gözlerinde farklı bir yolda @INC
, sonra use
ve require
olduğu gibi paket adı verildiğinde doğru olanı yapacağız use Example::Plot::FourD
.
Dosya, herhangi bir başlatma kodunun başarılı bir şekilde yürütüldüğünü belirtmek için son ifade olarak true döndürmelidir, bu nedenle,
1;
aksi takdirde true döneceğinden emin olmadığınız sürece böyle bir dosyayı sonlandırmak gelenekseldir . Ancak1;
, daha fazla ifade eklemeniz durumunda, sadece koymak daha iyidir .Eğer
EXPR
bir bareword olduğunurequire
kolay bunu yapmak için standart modülleri yüklemek için bir ".pm" uzantısı ve yerine geçer '::' '/' ile sizin için dosya adını varsayar. Modüllerin bu şekilde yüklenmesi ad alanınızı değiştirme riskini almaz.
Tek use
yapmanız gereken, sağlanan paket adından dosya adını bulmak, require
bunu bir BEGIN
blokta bulmak ve import
paketi çağırmaktır . Kullanmamanızı engelleyen hiçbir şey yoktur, use
ancak bu adımları manuel olarak atabilirsiniz.
Örneğin, aşağıda Example::Plot::FourD
paketi adlı bir dosyaya koydum, dosyadaki t.pl
bir komut dosyasına yükledim 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
#!/usr/bin/perl
use strict; use warnings;
BEGIN {
require 't.pl';
}
my $p = Example::Plot::FourD->new;
$p->something;
C:\Temp> s
something
Bu örnek, modül dosyalarının bitmesi gerekmediğini 1
, herhangi bir gerçek değerin yeterli olacağını gösterir.
Bir .pl, tek bir komut dosyasıdır.
.Pm ( Perl Modülü ) içinde, diğer Perl betiklerinden kullanabileceğiniz işlevlere sahipsiniz:
Bir Perl modülü, bir Perl programı veya diğer Perl modülleri tarafından kullanılabilen bağımsız bir Perl kodu parçasıdır. Kavramsal olarak bir C bağlantı kitaplığına veya bir C ++ sınıfına benzer.
1
önemli değil. Olabilir, olabilir2
,"foo"
olabilir["a", "list"]
. Önemli olan, olmaması0
ya da yanlış olarak değerlendirilen yause
da başarısız olacağıdır.