Paso 5: Una (muy) breve lección sobre expresiones regulares
Para agarrar las entradas de hash del archivo XML y también ahorrar un poco de tiempo buscando, vamos a querer recurrir a la ayuda de uno de los más potentes características de Perl: la expresión regular. Haré una breve lección sobre expresiones regulares, pero para aquellos de ustedes que quieren que más explicaciones detallan, hay un montón de tutoriales de buena expresión regular en línea. Echale un http://perldoc.perl.org/perlretut.html un tutorial de buena expresión regular.En Resumen, las expresiones regulares nos proporcionan un conjunto de herramientas para ir a través de cadenas de caracteres, reemplazar una cadena con otra cadena, o ahorrar porciones de una cadena para su uso posterior. Las expresiones regulares proporcionan 2 funciones, la adecuación (m / /) y reemplazo (s / /) los operadores, que se van a utilizar para este proyecto. Para usar cualquiera de esta funciones en un contexto de asignación, utilizamos operador de unión de Perl (= ~), que se utiliza para atar un patrón a una variable de cadena de elección.
Ejemplos:
$comment =~ /Purduecer/; #returns true if $comment string contains phrase "Purduecer"s/[a-z]/[A-Z]/; #take all lowercase letters in string and capitalize them in $_ string
Una segunda característica útil de las expresiones regulares es el de variables de memoria. En expresiones regulares, puede colocar ciertos artículos entre paréntesis, y luego uso el patrón especial combinar variables de memoria $1, $2, etc. para acceder a las porciones de las cadenas que coinciden estas piezas más adelante.
Ejemplos:
/(Instructables) Robot/; #Match any line with the phrase "Instructables Robot"$website = $1; #Save result of successful pattern match contained in first set of parens #(in this case, variable $1 contains "Instructables")
Finalmente, en expresiones regulares, hay ciertos personajes que sirven a un propósito especial. Estos son escapes de barra invertida (que sería familiar a los programadores de C), las clases de caracteres y metacaracteres carácter. Por ejemplo, para que coincida con cualquier letra que dispone de una ficha a cada lado, podríamos decir:
/\t[a-zA-Z]\t/
Los corchetes se utilizan en expresiones regulares para definir una clase de caracteres. Sin embargo, supongamos que queríamos encontrar texto entre corchetes en la línea. Podríamos no simplemente escribir tal como se muestra a continuación:
/[[a-zA-Z]+]/; #WRONG, outer square brackets interpreted as a character class, do not do this
Por lo tanto, para eliminar las cualidades del par de corchetes, añadir una barra invertida antes, que elimina las cualidades de cualquier otra manera reservado carácter dentro de una expresión regular.
/\[[a-zA-Z]+\]/; #Correct, now matches any number of letters enclosed within a pair of square #brackets