-+  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

  • delete ESPR

    Data un'espressione che specifica un elemento di un hash o di un array, una porzione di hash o di array, cancella l'elemento o gli elementi specificati dall'hash o dall'array. Nel caso di un array, se gli elementi sono in fondo, la dimensione dell'array diminuirà fino al massimo elemento per il quale la condizione exists() è vera (oppure fino a 0, se tale elemento non esiste).

    Restituisce una lista con lo stesso numero di elementi che si è tentato di eliminare. Ogni elemento di questa lista consiste o nel valore dell'elemento eliminato, oppure nel valore undef. In contesto scalare, questo vuol dire che il valore restituito è il valore dell'ultimo elemento eliminato (o il valore indefinito se quell'elemento non esisteva).

        %hash = (pippo => 11, pluto => 22, paperino => 33);
        $scalare = delete $hash{pippo};               # $scalare e` 11
        $scalare = delete @hash{qw(pippo pluto)};     # $scalare e` 22
        @array   = delete @hash{qw(pippo pluto paperino)}; # @array e` (undef,undef,33)

    Cancellare da %ENV modifica l'ambiente. Cancellare da un hash legato ad un file DBM cancella le voci dal file DBM. Cancellare da un hash o array legato potrebbe non necessariamente restituire qualcosa.

    Cancellare effettivamente un elemento da un array riporta quella posizione dell'array al suo stato iniziale, non inizializzato. Successive verifiche con exists() dello stesso elemento restituiranno falso. Inoltre, cancellare elementi nel mezzo di un array non farà scorrere in basso l'indice degli elementi successivi. Usate splice() per questo. Si veda exists.

    Il seguente codice cancella (in maniera inefficiente) tutti i valori di %HASH e di @ARRAY:

        foreach $chiave (keys %HASH) {
            delete $HASH{$chiave};
        }
        foreach $indice (0 .. $#ARRAY) {
            delete $ARRAY[$indice];
        }

    Questi fanno la stessa cosa:

        delete @HASH{keys %HASH};
        delete @ARRAY[0 .. $#ARRAY];

    Ma entrambi risultano più lenti che l'assegnare semplicemente la lista vuota oppure rendere indefiniti %HASH o @ARRAY:

        %HASH = ();         # svuota completamente %HASH
        undef %HASH;        # dimentica che %HASH sia 
                            # mai esistito
        @ARRAY = ();        # svuota completamente @ARRAY
        undef @ARRAY;       # dimentica che %ARRAY sia
                            # mai esistito

    Va notato che ESPR può essere arbitrariamente complessa, purché l'operazione finale denoti l'elemento di un hash, di un array, una porzione di un hash o di un array:

        delete $ref->[$x][$y]{$chiave};
        delete @{$ref->[$x][$y]}{$chiave1, $chiave2, @altrechiavi};
        delete $ref->[$x][$y][$indice];
        delete @{$ref->[$x][$y]}[$indice1, $indice2, @altriindici];
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