Latest web development tutorials

pacchetti Perl e moduli

Perl Ogni pacchetto ha un simbolo sintassi definizione di tabella a parte è:

package mypack;

Questa istruzione definisce un pacchetto chiamatomypack a nome di tutte le variabili e sottoprogrammi definiti in seguito, vengono memorizzate nella tabella dei simboli associato al pacchetto, il pacchettofinché non incontra un'altra istruzione finora.

Ogni tabella simbolo ha una propria serie di variabili, subroutine, ogni nome di gruppo non è rilevante, in modo da poter utilizzare lo stesso nome di variabile in diversi pacchetti, che rappresentano diverse variabili.

L'accesso da un unico pacchetto ad un'altra variabile pacchetto, è possibile specificare il "nome del pacchetto + doppio due punti (: :) + nome della variabile" approccio.

Memorizzazione variabili e nomi di subroutine tabella dei simboli di default associato al pacchetto si chiamaprincipale-linked.Se il programma è definito in altri pacchetti, quando si desidera tornare a utilizzare la tabella dei simboli di default, è possibile riassegnare il pacchetto principale:

package main;

Così, il prossimo programma, come se mai definito pacchetti, variabili e nomi di subroutine lo stoccaggio al solito.

Il seguente file di esempio ha pacchetto principale e Foo.__PACKAGE__ Variabile speciale per i nomi dei pacchetti in uscita:

#!/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;

Il programma precedente, l'uscita è:

包名 : main 1
包名 : Foo 10
包名 : main 100
包名: main 10

BEGIN ed END moduli

linguaggio Perl offre due parole chiave: inizio, fine. Essi possono essere un insieme separato di script che eseguono prima dell'esecuzione del programma o del corpo dopo l'esecuzione.

La sintassi è la seguente:

BEGIN { ... }
END { ... }
BEGIN { ... }
END { ... }
  • Ogni bloccoBEGIN, ma eseguito prima di altri istruzioni eseguite dopo che lo script Perl caricato e compilato.

  • Ogni bloccoEND di istruzioni eseguite prima che l'interprete si chiude.

  • BEGIN ed ENDblocco è particolarmente utile quando si crea un modulo Perl.

Se non si capisce grande, possiamo vedere esempi:

#!/usr/bin/perl

package Foo;
print "Begin 和 Block 实例\n";

BEGIN { 
    print "这是 BEGIN 语句块\n" 
}

END { 
    print "这是 END 语句块\n" 
}

1;

Il programma precedente, l'uscita è:

这是 BEGIN 语句块
Begin 和 Block 实例
这是 END 语句块

Che cosa è un modulo Perl?

Perl5 con il pacchetto Perl per creare un modulo.

modulo Perl è un pacchetto riutilizzabile, il nome del modulo e lo stesso nome del pacchetto, estensione del file definito per.pm.

Di seguito definiamo un Foo.pm modulo, codice come segue:

#!/usr/bin/perl

package Foo;
sub bar { 
   print "Hello $_[0]\n" 
}

sub blat { 
   print "World $_[0]\n" 
}
1;

Moduli Perl preoccupante notare quanto segue:

  • Funzione euso richiedonoun modulo di carico.

  • @INC Perl è una speciale matrice integrata che contiene il percorso della directory per l'ubicazione delle routine di libreria si trova.

  • richiedono e utilizzarela funzione chiama funzioneevalper eseguire il codice.

  • Fine1; esecuzione restituisce TRUE, questo è un must, altrimenti restituisce un errore.


Richiedono l'uso e la funzione

Il modulo può essere invocata dalla funzionerichiede come segue:

#!/usr/bin/perl

require Foo;

Foo::bar( "a" );
Foo::blat( "b" );

È inoltre possibile utilizzare la funzione per fare riferimento a:

<pre>
#!/usr/bin/perl

use Foo;

bar( "a" );
blat( "b" );

Notiamo la necessità di richiedere un riferimento al nome specificato Funzione del pacchetto, e non c'è bisogno di usare, la differenza principale tra i due è:

  • 1, richiedono per il caricamento di modulo Perl o di un programma (il suffisso .pm possono essere omessi, ma ci deve .pl)
  • 2, dichiarazione uso Perl è compilato quando ha introdotto, richiede runtime viene introdotto
  • 3, Perl usa la introduzione del modulo, ma anche l'introduzione del modulo sottomodulo. E non può richiedere l'introduzione al re-statement
  • 4, uso è quello di guardare il @INC predefinito corrente all'interno, una volta che il modulo non è nelle parole @INC con USE non viene introdotto, ma può richiedere un percorso specificato
  • 5, è utilizzato il modulo di riferimento, se il nome del modulo contiene :: doppio del colon, del colon raddoppierà come un separatore di percorso, l'equivalente del Unix / o sotto Windows \. Come ad esempio:

    use MyDirectory::MyModule

È possibile esportare un elenco di simboli dal modulo aggiungendo la seguente dichiarazione da utilizzare moduli:

require Exporter;
@ISA = qw(Exporter);

@EXPORT Array contiene le variabili e le funzioni derivate dal nome di default:

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;

Creare un modulo Perl

È possibile creare facilmente un modulo Perl distribuzione Perl viene fornito con un h2xs utensili.

È possibile digitare la riga di comando h2xs modalità un'occhiata alla sua lista di parametri.

sintassi h2xs:

$ h2xs -AX -n  ModuleName

Descrizione Parametro:

  • -A Meccanismo di caricamento automatico Ignorato

  • -X Ignorato elemento XS

  • -n Specifica il nome dell'estensione

Ad esempio, se il filePerson.pm modulo, utilizzare il seguente comando:

$ h2xs -AX -n Person

Quanto sopra uscita programma:

Writing Person/lib/Person.pm
Writing Person/Makefile.PL
Writing Person/README
Writing Person/t/Person.t
Writing Person/Changes
Writing Person/MANIFEST

Persona nella directory è possibile vedere le directory appena aggiunti e file Spiegazione:

  • README: Questo file contiene informazioni sull'installazione, dipendenze dei moduli, le informazioni di copyright, e così via.

  • Modifiche: Questo file di registro cambiamento come il file di progetto (changelog).

  • Makefile.PL: Questo è il costruttore standard di Perl Makefile. Utilizzato per creare un file Makefile.PL per compilare il modulo.

  • MANIFESTO: Questo file è usato per costruire automaticamente il tipo di tar.gz della distribuzione versione del modulo. Così si può mettere il modulo CPAN per essere pubblicati o distribuiti ad altri. Esso contiene un elenco di tutti i file in questo progetto.

  • Person.pm: Questo è il file modulo principale che contiene il codice per il gestore mod_perl (codice del gestore).

  • Person.t: per questo modulo alcuni script di test. Per impostazione predefinita, è solo il controllo del modulo caricato, è possibile aggiungere qualche nuova unità di prova.

  • / T: test file

  • / Lib: directory di archiviazione fonte reale

È possibile utilizzare tar di comando (Linux) nella directory sopra confezionato come Person.tar.gz.


Installare i moduli Perl

Possiamo soloPerson.tar.gz file compresso per decomprimere l'installazione, effettuare le seguenti operazioni:

tar xvfz Person.tar.gz
cd Person
perl Makefile.PL
make
make install

Prima esecuzione "perl Makefile.PL" nella directory corrente generata Makefile;

Quindi eseguire "make" per compilare e creare il file di libreria necessari;

Seguito da "make test" test compilare i risultati sono corretti, l'ultima corsa "make install" per installare i file di libreria nella directory di sistema, terminando così l'intero processo di compilazione.