por explorer » 2006-04-10 11:00 @500
En tu programa, en la primera línea, habrás puesto '-T', con lo que estarás activando el modo 'Taint'.
Lo que hace es que trata a todo lo que venga de fuera del programa como 'sospechoso'. Esto se hace para evitar que un hacker pueda romper la funcionalidad del programa insertando información que nosotros pensamos que es legal, pero que puede romper la seguridad de nuestra máquina.
Cuando haces el listado de los ficheros disponibles, estás usando información (los nombres de los ficheros) como sospechosa. Sí, sabemos que los ficheros son nuestros, sabemos donde están y cómo se llaman... pero son externos a nuestro programa... ¿qué pasaría si alguien colocora allí un fichero que tuviera un nombre especial, tan especial que rompiera la ejecución del programa y le mandase hacer cosas que no quieres?.
Cuando entras al bucle foreach, el modo taint impregna a la varible $temporal (es decir, que sigue conteniendo información sospechosa).
Pero cuando Perl se encuentra con la expresión regular, en ese momento es como si le dijéramos que estamos tomando la precaución de que vamos a analizar con más detalle el nombre del fichero, que lo miraremos con lupa y que sólo nos quedaremos con lo que nos interesa.
Entonces, la variable $fichero se llena con el nombre del fichero y Perl la trata como que ya contiene información interna al programa.
Luego podremos hacer con ella lo que queramos.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES