Dichiara l'unità di compilazione come appartenente
allo spazio dei nomi specificato. Lo scope della dichiarazione
del package parte dalla dichiarazione stessa fino alla fine
del blocco, file, o eval che la include (esattamente come per
l'operatore my). Tutti gli identificatori dinamici non
esplicitamente qualificati apparterrano a questo spazio dei
nomi. Un'istruzione che dichiara un package influisce solo
sulle variabili dinamiche, incluse quelle dichiarate con
local, ma non su quelle lessicali, cioè create
con my. Tipicamente, package dovrebbe essere la prima
dichiarazione in un file che viene incluso con l'operatore
require o user. Potete passare ad un package in più
di un punto; tale dichiarazione determina semplicemente quale
tabella dei simboli viene usata dal compilatore per la fine del
blocco in cui ci trova. Potete far riferimento a variabili e
filehandle in altri package prefissandoli con il nome del
package ed un doppio simbolo di due punti: $Package::Variable.
Se il nome del package è vuoto, viene considerato il
package main. Dunque, $::sail equivale a $main::sail
(ed anche a $main'sail, sintassi che ancora si vede in certo
codice vecchio).
Se SPAZIONOMI viene omesso, allora non viene dichiarato alcun package corrente, e tutti gli identificatori devono essere pienamente qualificati, oppure essere lessicali. Comunque, è fortemente sconsigliato non dichiarare uno spazio dei nomi. Ciò potrebbe infatti causare un comportamento inaspettato del vostro programma, o persino un crash in alcune versioni di Perl. La forma senza SPAZIONOMI è considerata obsoleta, e verrà rimossa a partire da una versione a venire.
Consultate perlmod/"Packages" per maggiori informazioni sui package, sui moduli, e sulle classi. Consultate perlsub per ulteriori informazioni sullo scope.