Lo primero, estás poniendo puntos '.' demás, en los print de las líneas 49 y 54. Quítalos.
Segundo, estás usando el mismo controlador (DIR) para todas las vueltas, y eso no me gusta nada. No afecta mucho porque haces la operación
@entradas=readdir(DIR);, con la que lees todo el contenido del directorio, de golpe. Pero es mucho más seguro hacerlo así:
Using perl Syntax Highlighting
if(!opendir(my $DIR, $d)){ # comprobar apertura
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Using perl Syntax Highlighting
@entradas = readdir($DIR);
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Using perl Syntax Highlighting
close ($DIR); # cerramos el directorio
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Tercero; algunos directorios ves que no acaban con '\'. Eso es porque en la línea 31 estás leyendo todo los archivos y directorios, incluidos los que excluyes en la línea 36. Y eso es lo que precisamente ocurre: resulta que en el subdirectorio etc/, las últimas entradas corresponden a esos directorios especiales. Al ser descartados por la línea 36, nunca se cumple la condición de la 38, por lo que no aparece el '\'.
La solución es filtrar los directorios especiales justo en el momento de leerles con readdir(): quita la 36 y la 31 la reescribes así:
Using perl Syntax Highlighting
@entradas = grep { !/^\.{1,2}$/ } readdir(DIR);
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Hay otro detalle... me parece... y es que en la línea 32 sumas un espacio como espacio de sangrado, pero según el ejemplo de salida, quizás deberían ser dos, excepto... ¿el primer nivel?