La función de chop() en Perl

En el lenguaje de programación Perl tiene integrada la función de chop(). Esta función se utiliza cuando se trabaja con cadenas. En el caso más sencillo, la función de chop() elimina el último carácter en la variable que se haya presentado el argumento de esta función.

He aquí un ejemplo:

▶ Run
#!/usr/bin/perl

my $string = 'ASDF';

chop($string);

print "'$string'";

Este programa mostrará en pantalla el texto 'ASD'.

Los argumentos

En caso de que la función de chop no se transfieren a ningún argumento, la función trabaja con дефолтной variable $_:

▶ Run
#!/usr/bin/perl

$_ = 123;

chop();

print "'$_'";

En el caso de que en la variable $_ se encuentra undef y utiliza la use warnings;, será una advertencia:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

En función de chop() puede enviar скаляры, matrices, hashes. En el caso de hash la función sólo funciona con los valores de las claves, los mismos claves no cambiarán.

El argumento de la función chop() siempre debe ser una variable. En caso de que tratar de pasar a esta función de la cadena, lo que se producirá un error y la aplicación de programas se detiene:

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

El valor devuelto

La función de chop() siempre devuelve una cadena. Esto puede ser en blanco la cadena de '', o una cadena consiste de exactamente un carácter.

He aquí un ejemplo de la situación cuando el chop() devuelve una cadena vacía:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my $var = '';

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

Y este es un ejemplo más frecuente es la situación, cuando chop() devuelve una cadena de exactamente un de carácter. La función devuelve el carácter que fue cortado de la línea:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my $var = 'asdf';

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

Este programa mostrará en pantalla:

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

He aquí otro ejemplo de una situación cuando chop() devuelve un carácter.

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my @arr = qw(abc def ghi);

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

La salida del programa:

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

La función de chop() cortó el último carácter de todos los elementos de la matriz, pero devolvió sólo un símbolo, el que se cortó el último.

La documentación oficial

He aquí el resultado 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".

Temas relacionados

Otros articulos