Questa versione più intelligente di chop rimuove dalla coda della
stringa passata come parametro qualsiasi stringa che corrisponda al valore
corrente di $/ (conosciuta anche come $INPUT_RECORD_SEPARATOR [record separatore di input, NdT]
nel modulo English). La funzione restituisce il numero totale di caratteri rimossi da
tutti i suoi argomenti. È spesso utilizzato per rimuovere il newline dalla fine di un
record in input, quando temete che il record possa essere sprovvisto del suo newline. Quando
è utilizzata in paragraph mode [modalità paragrafo, NdT] ($/ = ""), rimuove
tutti i newline in coda ad una stringa. Quando è utilizzata in slurp mode
[modalità slurp, NdT] ($/ = undef) o con una lunghezza di record fissa ($/
è un riferimento ad un intero o a qualcosa di simile, consultate perlvar), chomp()
non rimuoverà nulla. Se VARIABILE viene omessa, chomp agisce su $_. Ad esempio:
while (<>) {
chomp; # rimuove \n dall'ultimo campo
@array = split(/:/);
# ...
}
Se VARIABILE è un hash, chomp() agisce sui valori dell'hash, ma non sulle sue chiavi.
Potete utilizzare chomp su qualsiasi cosa che sia un lvalue [valore a sinistra di un'espressione, NdT], incluso un assegnamento:
chomp($cwd = `pwd`);
chomp($risposta = <STDIN>);
Se usate chomp() su una lista, viene effettuato il chomp di ogni elemento, e viene restituito il numero totale di caratteri rimossi.
Se la direttiva encoding è nello scope, allora
le lunghezze che vengono restituite sono calcolate a partire dalla lunghezza di $/ in
caratteri Unicode che non è sempre la stessa cosa della lunghezza di $/ nella
codifica nativa.
Va notato che le parentesi sono necessarie quando usate chomp() su qualsiasi cosa che non sia una
variabile semplice. Ciò deriva dal fatto che chomp $cwd = `pwd`; è
interpretato come (chomp $cwd) = `pwd`;, anziché come chomp( $cwd = `pwd` ), come
vi potreste aspettare. Similmente, chomp $a, $b è interpreato come chomp($a), $b
anziché come chomp($a, $b).