A função chop() em Perl

Na linguagem de programação Perl possui a função de chop(). Esta função é utilizada quando se trabalha com cadeias de caracteres. No caso mais simples, a função chop() eliminará o último caractere na variável que é transmitida argumento essa função.

Aqui está um exemplo:

▶ Run
#!/usr/bin/perl

my $string = 'ASDF';

chop($string);

print "'$string'";

Este programa irá imprimir na tela o texto 'ASD'.

Argumentos

No caso de uma função chop não passar nenhum argumento, a função funciona com дефолтной variável $_:

▶ Run
#!/usr/bin/perl

$_ = 123;

chop();

print "'$_'";

No caso de a variável $_ está undef e é usado use warnings;, então vai um aviso:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

Em função chop() pode enviar escalares, arrays, hashes. Em caso de hash a função irá trabalhar apenas com valores de chaves, eles mesmos, as chaves não são alterados.

Argumento da função chop() , deve ser sempre variável. No caso de tentar passar essa função de linha, o erro e a execução do programa será interrompido:

▶ 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.

O valor de retorno

A função chop() sempre retorna uma cadeia de caracteres. Isto pode ser vazio linha '', ou cadeia de caracteres que consiste exatamente a partir de um único caractere.

Aqui está um exemplo de uma situação quando chop() retorna a string vazia:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my $var = '';

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

E aqui está um exemplo mais freqüente situação, quando chop() retorna uma cadeia de caracteres de exatamente um o símbolo. A função retorna o caractere que foi cortado do comando:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my $var = 'asdf';

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

Este programa irá imprimir na tela:

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

Aqui está mais um exemplo de uma situação quando chop() retorna um caractere.

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my @arr = qw(abc def ghi);

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

A saída do programa:

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

A função chop() cortou o último símbolo de todos os elementos na matriz, mas retornou apenas um símbolo, o que foi cortada a última.

A documentação oficial

Aqui está a saída do 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".

Temas relacionados

Outros artigos