Funzione chop() in Perl

Nel linguaggio di programmazione Perl ci sono built-in funzione di chop(). Questa funzione viene utilizzata quando si lavora con le stringhe. Nel caso più semplice, la funzione chop() cancella l'ultimo carattere in una variabile che è trasmessa argomento a questa funzione.

Ecco un esempio:

▶ Run
#!/usr/bin/perl

my $string = 'ASDF';

chop($string);

print "'$string'";

Questo programma visualizzerà il testo 'ASD'.

Argomenti

Nel caso in cui la funzione chop non trasmessi gli argomenti, la funzione lavora con di default della variabile $_:

▶ Run
#!/usr/bin/perl

$_ = 123;

chop();

print "'$_'";

Nel caso in cui in una variabile $_ si trova undef e viene utilizzato use warnings;, ci sarà un avvertimento:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

chop();
Use of uninitialized value $_ in scalar chop at script.pl line 6.

In funzione chop() è possibile trasferire scalari, array, hash. In caso di hash la funzione funziona solo con i valori delle chiavi, le chiavi non cambieranno.

L'argomento della funzione chop() deve essere sempre variabile. Nel caso in cui provare a passare a questa funzione una stringa, allora sarà un errore e l'esecuzione del programma sarà interrotta:

▶ Run
#!/usr/bin/perl

chop('ASDF'); # Error!
Can't modify constant item in chop at script.pl line 3, near "'ASDF')"
Execution of script.pl aborted due to compilation errors.

Il valore restituito

Funzione chop() restituisce sempre una stringa. Questo può essere sia vuota stringa '', oppure una stringa composta esattamente da un simbolo.

Ecco un esempio di una situazione in cui chop() restituisce una stringa vuota:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my $var = '';

warn Dumper chop($var);
warn Dumper $var;

Ecco un esempio più frequente situazione, quando chop() restituisce una stringa esattamente da un il simbolo. La funzione restituisce il carattere che è stato tagliato fuori dalle righe:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my $var = 'asdf';

warn Dumper chop($var);
warn Dumper $var;

Questo programma visualizza:

$VAR1 = 'f';
$VAR1 = 'asd';

Ecco un altro esempio di una situazione quando chop() restituisce un carattere.

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my @arr = qw(abc def ghi);

warn Dumper chop(@arr);
warn Dumper \@arr;

L'output del programma:

$VAR1 = 'i';
$VAR1 = [
          'ab',
          'de',
          'gh'
        ];

Funzione chop() ha tagliato l'ultimo simbolo di tutti gli elementi in un array, ma ha restituito solo un simbolo, quel che è stato tagliato l'ultimo.

La documentazione ufficiale di

Ecco l'output del comando perldoc -f chop:

       chop VARIABLE
       chop( LIST )
       chop    Chops off the last character of a string and returns the
               character chopped.  It is much more efficient than "s/.$//s"
               because it neither scans nor copies the string.  If VARIABLE is
               omitted, chops $_.  If VARIABLE is a hash, it chops the hash's
               values, but not its keys.

               You can actually chop anything that's an lvalue, including an
               assignment.

               If you chop a list, each element is chopped.  Only the value of
               the last "chop" is returned.

               Note that "chop" returns the last character.  To return all but
               the last character, use "substr($string, 0, -1)".

               See also "chomp".

Temi correlati

Altri articoli