En la línea 3 activaste el modo estricto. Eso quiere decir que a partir de ese momento, todo código que escribas debe seguir una serie de reglas, encaminadas, sobre todo, a reducir los errores de sintaxis.
Por eso, cuando Perl llega a la línea 14, se encuentra por primera vez con la variable $File, y como no sabe dónde ha sido declarada, sale el mensaje de error. Lo mismo pasa con la línea siguiente: no sabe dónde ha sido declarada, si es una variable declarada en otro paquete o es una variable global de nuestro mismo programa o es una variable local al programa, o si es una variable local del bucle foreach().
En este caso, se resuelve de forma fácil. Como se ve claro que se trata de una variable local, del propio bucle foreach(), se puede modificar la línea 14 así:
Using perl Syntax Highlighting
foreach my $File(@arxius) {
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Y con eso ya estamos declarando a la variable como local del bucle.
Por otra parte, creo que la línea 13 no es correcta. Estás solicitando un ls() a un directorio local, pero ese método se refiere a obtener un listado de un directorio remoto, en el servidor.
Si quieres tener un listado de los archivos .htm en tu directorio local, debes usar otro método. Por ejemplo:
Using perl Syntax Highlighting
my @arxius = glob("/home/enric/htm/*.htm");
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4