En la falla del servidor, How to list symbolic link chains? (no es mi pregunta) se refiere a enumerar todos los enlaces simbólicos y seguirlos. Para hacer esto factible, consideremos un solo directorio al principio.¿Cómo puedo representar los enlaces simbólicos de un sistema de archivos en un hash Perl?
Quiero escribir un corto utilidad que hace esto. Parece fácil poner pares de enlaces simbólicos en un hash y luego procesar el hash.
Pero entonces yo podría tener algo como:
ls -l
total 0
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 08:48 a -> b
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 08:48 b -> c
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 09:03 c -> a
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 09:17 trap -> b
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 09:17 x -> y
lrwxrwxrwx 1 pjb pjb 1 2010-02-23 09:17 y -> b
donde es obvio que a->b->c
es un bucle, y que los puntos trampa en un bucle, pero para saber x
puntos en un bucle que necesita seguir una poco.
Una representación hash es:
a => b
b => c
c => a
trap => b
x => y
y => b
Pero la representación inversa es mejor para el marcado de los bucles a los malos puntos de partida, una vez que sepa lo que los bucles son.
Así que aquí hay algunas preguntas:
- es un hash de la mejor estructura para representar los enlaces simbólicos?
- ¿Cuál es la mejor manera de separar el gráfico del sistema de archivos para contar los componentes con bucles de los componentes del árbol a la rama con un tipo de bucle?
- ¿Hay un algoritmo mejor que la búsqueda manual de todos los bucles desde todos los puntos de partida?
- Desde una perspectiva de teoría de gráficos, ¿ya está este tipo de cosas en el CPAN? Si no, ¿cuáles son algunos buenos módulos de ayuda?
El envío del código de muestra para resolver el problema obviamente también se recomienda. – Paul
Mostrarnos lo que has intentado hasta ahora también se recomienda. :) –
@brian Doh! Vi esto principalmente como el problema claro de otra persona, y no intenté resolverlo más allá de reconocer algunas de las trampas. – Paul