perlmod spiega quei blocchi speciali ma in realtà solo BEGIN
e END
sono comunemente usati. Sono solo array di CV, LIFO o FIFO. Questi blocchi consentono temporizzazioni separate quando il codice viene eseguito, indipendentemente dalla posizione nel file di origine. Quindi è possibile mantenere insieme le sezioni di codice, ma vengono eseguite in momenti diversi (PHASES
).
VERIFICA stato aggiunto inizialmente per eseguire la suite compilatore O (-MO=C...
) in un ordine fisso dopo il modulo di inizializzazione (pacchetto utilizzo), e prima che il programma principale, per essere in grado negozio contesto di esecuzione lì. Questo separa il tempo di compilazione (prima) dal tempo di esecuzione (dopo). perl -c
si ferma dopo CHECK.
Dato che sono il manutentore dei compilatori, utilizzo CHECK e -MO = estensivamente. I miei moduli compile()
sono chiamati da O all'interno di un blocco CHECK. Con o (debug O) Io chiamo il metodo compile
non in CHECK, ma più tardi in INIT, quindi il debugger vi entra. Il debugger non passa ai blocchi CHECK per impostazione predefinita, è necessario forzarlo con $DB::single=1
o utilizzare Od.
UNITCHECK è stato aggiunto in seguito alla compilazione del modulo a grana fine e al caricamento, esp. .pmc
file.
Non l'ho mai usato fino ad ora. Può anche accadere in fase di esecuzione, quindi potrei usarlo per i controlli di tipo dei moduli caricati in fase di esecuzione.
INIT è stato quindi aggiunto per consentire l'inizializzazione della classe separata.
Raramente lo uso, ma è utile.
Ora mi ricordo perché non volevo eseguire 'require Module; Module-> import (@stuff)'. Era perché avevo già una serie di script di test che volevo poter eseguire il debug e non volevo modificare l'istruzione 'use Module' in ogni file. – mob
Non è necessario passare attraverso tali contorsioni per eseguire il debug del codice di compilazione. Basta posizionare $ DB :: single = 1 in qualsiasi punto dell'origine e il debugger si fermerà a quel punto, indipendentemente dalla fase di elaborazione del programma. (Vedere http://perldoc.perl.org/perldebug.html#Debugging -compile-time-statement) –
Grazie Brian! Buono a sapersi. – mob