POD2-IT

 view release on metacpan or  search on metacpan

IT/perldata.pod  view on Meta::CPAN

Per una descrizione vedete L<perlref>.

I nomi che iniziano con una cifra numerica possono contenere solo
altre cifre numeriche. I nomi che non cominciano con una lettera,
I<underscore>, cifra numerica o con un accento circonflesso (ossia,
un carattere di controllo) sono limitati ad un singolo carattere,
ad esempio C<$%> o C<$$>. (La maggior parte di questi nomi con
un singolo carattere hanno significati predefiniti in Perl. Ad
esempio, C<$$> E<egrave> l'identificativo del processo corrente).


=head2 Contesto
X<contesto> X<contesto scalare> X<contesto lista>

L'interpretazione di operazioni e valori in Perl a volte dipende
dai requisiti del contesto intorno all'operazione o al valore. Ci
sono due contesti principali: lista e scalare. Alcune operazioni
restituiscono liste in contesti che chiedono liste, e valori
scalari altrimenti. Se questo vale per un'operazione, questo fatto
sarE<agrave> menzionato nella relativa documentazione. In altre parole,
Perl sovraccarica alcune operazioni basandosi sul fatto che ci si
aspetti un valore singolare o plurale. Alcune parole in italiano
si comportano allo stesso modo, ad esempio "pesce" [che puE<ograve> essere
riferito ad una molteplicitE<agrave> - come in "oggi mangiamo pesce" -
o al singolo elemento - come in "Ho preso un pesce solo oggi"].

In modo del tutto reciproco, un'operazione fornisce un contesto scalare
o lista a ciascuno dei suoi argomenti. Ad esempio, se scrivete

    int( <STDIN> )

l'operazione "intero" fornisce un contesto scalare all'operatore
diamante <>, che dunque reagisce leggendo una singola riga da STDIN
restituendola all'operazione "intero", che troverE<agrave> infine il valore
intero di quella linea e lo restituirE<agrave> a sua volta. Se, d'altra
parte, scrivete

    sort( <STDIN> )

allora l'operazione C<sort> fornisce un contesto lista a <>, che
procederE<agrave> a leggere ogni linea disponibile fino alla fine del file,
restituendola a C<sort>. Questa funzione, a sua volta, ordinerE<agrave> tale
lista di righe e la restituirE<agrave> come lista, qualsiasi sia il contesto
in cui E<egrave> stata chiamata.

L'assegnazione E<egrave> un pochino speciale, nel senso che utilizza il
suo argomento a sinistra per determinare il contesto dell'argomento
di destra. L'assegnazione ad uno scalare valuta la parte a destra in
contesto scalare, mentre l'assegnazione ad un array o ad una hash
fa sE<igrave> che la parte destra sia valutata in contesto lista.
Anche l'assegnazione ad una lista (o I<slice>, che E<egrave> comunque una
lista) valutano la parte destra in contesto lista.

Quando utilizzate la direttiva C<use warnings> o l'opzione a linea
di comando B<-w>, potreste vedere degli avvertimenti riguardo l'uso
inutile ["useless use" nel messaggio, N.d.T.] di costanti o funzioni
in "contesto void" [letteralmente "vuoto", ma si preferisce lasciare
l'originale in inglese viste anche le similitudini con il tipo I<void>
disponibile in C. N.d.T.]. Il contesto void significa semplicemente che il
valore E<egrave> stato gettato via, come in un'istruzione che contiene solo
C<"fred";> o C<getpwuid(0);>. Conta comunque come contesto scalare
per funzioni che fanno distinzione fra l'essere chiamate o meno
in contesto lista.

Le funzioni definite da utente possono scegliere di comportarsi
differentemente se sono chiamate in contesto void, scalare o lista.
La maggior parte delle funzioni non avranno perE<ograve> bisogno di
preoccuparsene, poichE<eacute> sia scalari che liste sono automaticamente
interpolati in liste. Consultate L<perlfunc/wantarray> per sapere
come fare a stabilire dinamicamente in quale contesto E<egrave> stata chiamata
la vostra funzione.


=head2 Valori scalari
X<scalare> X<numero> X<stringa> X<riferimento>

Tutti i dati in Perl sono scalari, array di scalari, o hash di
scalari. Uno scalare puE<ograve> contenere un singolo valore di tre tipi
differenti: un numero, una stringa o un riferimento. In generale,
la conversione da una forma all'altra E<egrave> trasparente all'utente.
Sebbene uno scalare non possa contenere valori multipli, puE<ograve>
contenere un riferimento ad un array o ad una hash che, a loro
volta, possono contenere valori multipli.

Gli scalari non devono essere per forza una cosa o l'altra. Non
c'E<egrave> nessun posto dove dichiarare una variabile scalare come
"stringa", "numero", "riferimento" o qualsiasi altra cosa.
A causa della conversione automatica, le operazini che restituiscono
scalari non hanno bisogno di preoccuparsi (ed infatti non lo fanno)
se il chiamante sta aspettando una stringa, un numero o un riferimento.
Perl E<egrave> un linguaggio contestualmente polimorfico i cui scalari
possono essere stringhe, numeri o riferimenti (il che include
gli oggetti). Sebbene stringhe e numeri siano considerati piE<ugrave> o
meno la stessa cosa per quasi tutti gli scopi, i riferimenti
sono puntatori a tipizzazione forte e non modificabili, con
un meccanismo di conteggio dei riferimenti [I<reference-counting>,
N.d.T.] e chiamata dei distruttori.

Un valore scalare E<egrave> considerato VERO in senso booleano se non E<egrave>
la stringa I<nulla> o il numero 0 (ovvero il suo equivalente stringa
"0"). Il contesto booleano E<egrave> solo una variante speciale del contesto
scalare, dove non viene mai effettuata alcuna conversione verso una
stringa o un numero.
X<booleano> X<bool> X<vero> X<falso> X<verita>

Ci sono in realtE<agrave> due varietE<agrave> di stringhe I<nulle> (a volte
dette stringhe "vuote"), una definita ed una indefinita. La versione
definita E<egrave> solo una stringa che ha lunghezza nulla, come C<"">.
La versione indefinita E<egrave> quel valore che indica che non c'E<egrave> un vero
valore per qualcosa, come quando c'E<egrave> stato un errore, o alla fine
di un file, o quando vi riferite a variabili non inizializzate sia
scalari che parti di array o hash. Sebbene nelle version piE<ugrave> datate
di Perl uno scalare non definito potesse diventare definito al suo
primo utilizzo in un posto dove era atteso un valore definito,
questo non si ha piE<ugrave> eccetto per rari casi di autovivificazione
descritti in L<perlref>. Potete utilizzare l'operatore C<defined()>
per determinare se un valore scalare E<egrave> definito (la cosa non
ha significato su array o hash), e l'operatore C<undef()> per
produrre un valore indefinito.
X<definito> X<indefinito> X<undef> X<null> X<nullo> X<stringa, nullo>
X<stringa, nulla>



( run in 1.282 second using v1.01-cache-2.11-cpan-6aa56a78535 )