Perl desde el terminal: one liners

Este material no estaría completo sin ejemplos del uso de Perl desde el terminal, que sin duda sirven de muestra del poder de este lenguaje también como herramienta cotidiana. Para ello debemos conocer algunos argumentos del intérprete Perl especiales para su uso en el terminal.

Como vimos de pasada en la sección 2.1.1, uno de los argumentos posibles es -w, para mostrar todos los avisos del intérprete, y otro es -e, que compila y ejecuta lo que escribamos entre 'comillas sencillas' en el terminal como un programa, en vez de abrir un fichero con código.

En este contexto podemos además aplicar otros argumentos:

Por defecto, Perl separa los datos de entrada, normalmente un archivo o una tubería ( pipe ), en líneas. Si queremos cambiar ese comportamiento necesitamos indicarlo por medio del argumento -0 (es un cero). Por ejemplo, para separar texto en párrafos podemos usar -00. Si necesitamos diseccionar el contenido de cada línea, por ejemplo en forma de columnas, recurrimos a estos dos argumentos:

Podemos invocar funciones de cualquier módulo instalado en el sistema mediante estos argumentos:

Quisiera mencionar también el argumento -i, que permite cambiar el contenido de un fichero in situ , que es conveniente usar con mucha prudencia para no destruir accidentalmente archivos. Para ello es recomendable mantener siempre copias de los archivos originales, por medio de la sintaxis -i.bk, que en este caso guarda copias con la extensión .bk de todos los ficheros procesados.

Ya que hemos visto que las expresiones one liners se ejecutan línea a línea, puede ser muy útil emplear bloques END{}, puesto que lo allí contenido se ejecuta únicamente al terminar de procesar todas las lineas. En la siguiente sección hay algunos ejemplos que lo explican.

OJO: En la Red es frecuente encontrar expresiones que contienen algo que parece un operador, }{, que no es otra cosa que una manera casi ilegible de separar el código de cada línea y el que se debe ejecutar al final, como en END. Ejemplo: $ perl -lpe'}{$_=$.' /etc/passwd (tomado de perlmonks).

Finalmente, es muy posible que tus expresiones Perl en el terminal salgan ganando si utilizas las variables especiales de Perl.

Como ejemplo del ahorro de escritura que permiten estos argumentos muestro ahora el mismo algoritmo,



Subsecciones
Bruno Contreras-Moreira
http://www.eead.csic.es/compbio