-+  Associazione
-+  Documenti
 |-  Modern Perl
 |-  Bibliografia
 |-  Articoli
 |-  Talk
 |-  Perlfunc
 |-  F.A.Q.
 |-  F.A.Q. iclp
-+  Eventi
-+  Community
-+  Blog
-+  Link
Corso di Perl



 


Funzioni Perl in italiano

indietro

  • goto ETICHETTA
  • goto ESPR
  • goto &NOME

    La forma goto-ETICHETTA trova l'istruzione etichettata con ETICHETTA e riprende l'esecuzione da essa. Questa forma non può essere utilizzata per entrare in alcun costrutto che richieda inizializzazione, come una subroutine oppure un loop foreach. Inoltre, non può essere utilizzata per entrare in un costrutto che è eliminato in fase di ottimizzazione o per uscire da un blocco o da un subroutine passata a sort. Può essere utilizzato per saltare praticamente in qualsiasi altro posto all'interno dello scope dinamico, anche fuori dalle subroutine, ma di solito è meglio utilizzare qualche altro costrutto, come last o die. L'autore di Perl non ha mai sentito la necessità di servirsi di questa forma di goto (in Perl, appunto, C è un'altra questione). (La differenza è che C non offre loop provvisti di nome in combinazione al controllo sui loop. Perl lo fa, e ciò sostituisce la maggior parte degli usi strutturati di goto negli altri linguaggi).

    La forma goto-ESPR si attende un nome di etichetta, il cui scope viene poi risolto dinamicamente. Questo permette l'utilizzo dei goto calcolati di FORTRAN, ma non è consigliato se state ottimizzando al fine di creare codice manutenibile:

        goto ("PIPPO", "PLUTO", "PAPERINO")[$i];

    La forma goto-&NOME è piuttosto diversa dalle altre forme di goto. In realtà non è affatto un goto nel suo significato normale, e non ha le croci associate agli altri goto. Invece, esce dalla subroutine corrente (causando la perdita di eventuali modifiche eseguite da local()) e chiama immediatamente la subroutine indicata utilizzando il valore corrente di @_. Questa forma è utilizzata dalle subroutine AUTOLOAD che desiderano caricare un'altra subroutine e poi far credere che sia stata quest'ultima ad essere chiamata sin dall'inizio (tuttavia eventuali modifiche a @_ effettuate dalla subroutine corrente vengono propagate all'altra). Dopo il goto, nemmeno caller sarà in grado di dire che questa subroutine è stata chiamata per prima.

    Non è necessario che NOME sia il nome di una subroutine; può essere una variabile scalare contenente un riferimento a codice, oppure un blocco che fornisce un riferimento a codice.

D:
Progetti e documenti in rilievo
Corso di Perl Progetto pod2it
D:
La ML di Perl.it
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per porre quesiti di tipo tecnico, per rimanere aggiornato su meeting, incontri, manifestazioni e novità su Perl.it.
Iscriviti!
D:
Annunci Google