В случае сбоя сервера как составить список цепочек символических ссылок? (не мой вопрос) говорит о перечислении всех символических ссылок и переходе по ним. Чтобы сделать это возможным, давайте сначала рассмотрим отдельный каталог.
Я хочу написать небольшую утилиту, которая сделает это. Выглядит легко поместить пары из символических ссылок в хеш, а затем обработать хеш.
Но тогда у меня могло бы получиться что-то вроде:
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
где очевидно, что a->b->c
- это цикл, и эта ловушка указывает на цикл, но чтобы знать, что x
указывает на цикл, мне нужно немного проследить.
Одно хеш-представление:
a => b
b => c
c => a
trap => b
x => y
y => b
Но обратное представление лучше для обозначения петель до плохих начальных точек, если я знаю, что это за петли.
Итак, вот несколько вопросов:
- Является ли хэш лучшей структурой для представления символических ссылок?
- как лучше всего отделить граф файловой системы, чтобы определить компоненты цикла от компонентов дерева до ветки с частями типа цикла?
- Есть ли лучший алгоритм, чем ручной поиск всех циклов из всех начальных точек?
- С точки зрения теории графов - есть ли подобное уже в CPAN? Если нет, то каковы хорошие вспомогательные модули?