En esta nota explicaré el uso de expresiones regulares con Perl, si no tienes las bases teóricas sobre este tema te invito a leer primero estas notas: expresiones regulares 1 y 2.
Para usar las expresiones regulares en Perl, =~
previo de la expresión regular para vincularla, como en el siguiente ejemplo:
$cadena =~ coding\w;
Si queremos verificar que una cadena cumple con algún patrón podemos utilizarla dentro de una condicional:
if($cadena =~ /coding\w){
}
Esa instrucción verifica que la cadena almacenada en la variable $cadena
coincida con la expresión regular que cumple con el patrón: coding
seguido de cualquier símbolo de palabra [A-Za-z0-9_]
.
Veamos los siguientes ejemplos
1. Reconocer una palabra específica en una cadena.
$dilema = "coding or not, that's the question ";
if ($dilema =~ /coding/){
print "coding si coincide\n";
}
else{
print "coding no coincide\n";
}
La salida de este bloque de instrucciones es: coding sí coincide
, pues en la variable $dilema
está contenida la palabra coding
.
2. Sustituir una palabra por otra.
$frase = "when I'm programming I'm happy"
$frase =~ s/programming/coding/;
print "$frase\n";
La salida de este bloque de instrucciones es: When I'm coding I'm happy
, la palabra programming
es sustituida por coding
.
3. Manipulación de una cadena.
#!/usr/bin/perl
$ingredientes = "coding coffee pizza imagination";
$programador = '(\w+)\s+(\w+)\s+(\w+)\s+(\w+)';
if ($ingredientes =~ m/$programador){
print "1st ingredient is $1.\n2nd ingredient is $2.\n3rd ingredient is $3.\n4th ingredient is $4.\n";
$ingredientes =~ s/$programador/\2 \4/;
print "The essential ingredients to create a programmer are \"${ingredientes}\".\n";
}
else{
print qq{"$ingredientes" did not match "$ingredientes".\n};
}
La salida de este script es:
1st ingredient is coding.
2nd ingredient is coffee.
3rd ingredient is pizza.
4th ingredient is imagination.
The essential ingredients to create a programmer are "coffee imagination".
Con este código se está manipulando la cadena que contiene una serie de ingredientes para crear a un programador coding coffee pizza imagination
, en el ejemplo se muestra como es posible iterar sobre cada palabra con el uso de expresiones regulares.
Espero que esta nota te haya sido útil, no olvides dejar tus comentarios. ¡Hasta entonces!
hola.
estoy aprendiendo perl.
ejecutando en un servidor unix el scrip HM.pl con las lineas del ejemplo 3, sale el resultado siguiente y no veo donde esta el problema.
Scalar found where operator expected at HM.pl line 8, near «$ingredientes =~ s/$programador»
(Might be a runaway multi-line // string starting on line 6)
(Missing operator before $programador?)
Backslash found where operator expected at HM.pl line 8, near «2 \»
(Missing operator before \?)
syntax error at HM.pl line 8, near «$ingredientes =~ s/$programador»
Unmatched right curly bracket at HM.pl line 10, at end of line
syntax error at HM.pl line 10, near «}»
Execution of HM.pl aborted due to compilation errors.