trim en Perl

En algunos lenguajes de programación tienen incorporada la función de trim()que le permite eliminar espacios en blanco del principio y de la conca de la cadena. Por ejemplo, si hay la cadena de ' asdf ', entonces la función de trim() hará de ella una cadena de 'asdf'. (la palabra "recorte" se puede traducir del inglés como "cortar")

En el lenguaje de programación Perl no tiene integrada la función de trim(), pero eliminar espacios en blanco del principio y del final de la línea y sin ella. He aquí un ejemplo de Perl de un programa que elimina iniciales y finales los espacios de la cadena:

▶ Run
#!/usr/bin/perl

use utf8;
use strict;
use warnings;
use Data::Dumper;

my $str = ' asdf   ';

$str =~ s/^\s+|\s+$//g;

print Dumper $str;

Este programa mostrará en pantalla:

$VAR1 = 'asdf';

Cómo funciona

Para cambiar de una línea se utiliza una expresión regular. He aquí un ejemplo más sencillo de una expresión regular, que modifica la línea: $str =~ s/BEFORE/AFTER/;:

  • $str — primero se especifica la variable a la que desea aplicar la expresión regular
  • =~ — este operador se aplica la expresión regular que se indica a la derecha de él, a lo que se indica a la izquierda
  • s/BEFORE/AFTER/ — es una expresión regular reemplazo s/, y se dice que es necesario reemplazar BEFORE en AFTER

En nuestro ejemplo, la expresión regular es un poco complicado: s/^\s+|\s+$//g; Aquí se trata de que todo lo que corresponde a la ^\s+|\s+$ debe reemplazar a una línea. Al final de la expresión regular, todavía hay un modificador de /g, que dice que no es necesario detenerse después de la primera sustitución, y la necesidad de sustituir de forma global todos coincidencia en la barra.

^\s+|\s+$. Aquí tiene los siguientes fragmentos:

  • ^ — significa el inicio de una línea
  • \s+ — significa uno o más de un carácter de espacio en blanco (\s significa el carácter de espacio en blanco, mientras que el signo de + , significa uno o más)
  • | — significa o lógico
  • $ — significa el final de la línea

Es decir, ^\s+|\s+$ significa: todos los espacios en blanco que se encuentran al principio de la línea o todos los espacios en blanco que se encuentran al final de la línea. Y estos caracteres encontrados se sustituyen por una cadena vacía.

Los caracteres

La expresión regular $str =~ s/^\s+|\s+$//g; elimina de la variable no sólo espacios en blanco al principio y al final y elimina todos los espacios en blanco. El carácter de tabulación (\t), el carácter de la migración en la otra cadena (\n), todo esto se remueva. He aquí un ejemplo en el que se ve:

▶ Run
#!/usr/bin/perl

use utf8;
use strict;
use warnings;
use Data::Dumper;

my $str = " \t \n asdf \n\n \t ";

$str =~ s/^\s+|\s+$//g;

print Dumper $str;

En Unicode, hay un montón de símbolos, que significan los espacios en blanco. \ssignifica uno de esos caracteres.

El uso de бибилиотек

Existen librerías que permiten eliminar iniciales y los espacios en blanco de la fila, por ejemplo:

Pero estas bibliotecas no se suministran con el Perl, es necesario ponerlos avanzadas. Hay situaciones en las que es más conveniente no utilizar la biblioteca, y independientemente de escribir el código para la cortando los espacios de inicio y de final de la cadena.

Otros articulos