Sur Server Fault, How to list symbolic link chains? (pas ma question) parle de lister tous les liens symboliques et de les suivre. Pour rendre cela faisable, considérons un seul répertoire au début.Comment représenter les liens symboliques d'un système de fichiers dans un hachage Perl?
Je veux écrire un utilitaire court qui fait cela. Il semble facile de mettre des paires de liens symboliques dans un hachage, puis de traiter le hachage.
Mais alors je pourrais avoir quelque chose comme:
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
où il est évident que a->b->c
est une boucle, et que les points de piège dans une boucle, mais de savoir x
des points dans une boucle je suivre un bit.
Une représentation de hachage est:
a => b
b => c
c => a
trap => b
x => y
y => b
Mais la représentation inverse est mieux pour marquer des boucles de mauvais points de départ, une fois que je sais ce que les boucles sont.
Alors, voici quelques questions:
- est un hachage de la meilleure structure pour représenter les liens symboliques? Quelle est la meilleure façon de séparer le graphe du système de fichiers pour indiquer les composants bouclés des composants de l'arbre à la brindille avec une pièce de type boucle?
- Existe-t-il un meilleur algorithme que la recherche manuelle de toutes les boucles à partir de tous les points de départ?
- D'un point de vue de la théorie des graphes - est ce genre de chose dans le CPAN déjà? Si non, quels sont les bons modules d'aide?
La soumission de l'exemple de code pour résoudre le problème est évidemment également encouragée. – Paul
La présentation de ce que vous avez essayé jusqu'ici est également encouragée. :) –
@brian Doh! J'ai vu cela surtout comme le problème de quelqu'un d'autre, et je n'ai pas essayé de le résoudre au-delà de reconnaître certains des pièges. – Paul