Using perl Syntax Highlighting
#!/usr/bin/env perl
use strict; # programación estricta
use warnings; # activar advertencias
use diagnostics; # activar explicación de advertencias
my $name; # declaramos una variable escalar
for $name (@ARGV) { # para cada argumento...
#print "$name\n";
if ($name =~ m/(Ale|ale)/) { # ¿$name contiene Ale o ale?
print "$1\n"; # sí, pintamos lo capturado por los paréntesis
}
}
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Una
expresión regular se debe aplicar a un valor escalar, en este caso, $name.
El operador es el
=~ (o el
!~ en caso de que queramos negar el resultado).
En el lado derecho se suele poner el operador de coincidencia
m// o el de sustitución
s/// o el de transliteración
tr/// (
y///). Como el operador
m// es muy común, se suele simplificar a solo
//. (Más información en tu propio ordenador en
perldoc perlop,
y en la Web (
traducido al español), sección
Operadores Regexp entrecomillados).
Dentro de los delimitadores, hay un
patrón de exp. reg. En este caso, usamos el carácter '|' para separar alternativas, y los paréntesis para capturar en $1, $2, etc. lo que se encuentre.
Tienes un buen resumen de las expresiones regulares en la
página de Wikipedia, en
perldoc perlre (
traducido al español), y un manual en
perlretut (todavía no terminado de traducir).
grep() viene fenómeno para hacer filtros, así que viene bien para este ejercicio.
Using perl Syntax Highlighting
#!/usr/bin/env perl
use strict;
my @b = grep { /Ale|ale/ } @ARGV;
print "@b\n";
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4