Latest web development tutorials

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.