On Server Fault, How to list symbolic link chains? (non la mia domanda) parla dell'elenco di tutti i collegamenti simbolici e del loro seguito. Per rendere questo fattibile, consideriamo inizialmente una singola directory.Come posso rappresentare i collegamenti simbolici di un file system in un hash Perl?
Voglio scrivere una breve utilità che faccia questo. Sembra facile mettere le coppie da collegamenti simbolici in un hash e quindi elaborare l'hash.
Ma allora potrei avere qualcosa di simile:
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
dove è ovvio che a->b->c
è un loop, e che i punti di trappola in un ciclo, ma per sapere x
punti in un ciclo Ho bisogno di seguire una po.
Una rappresentazione hash è:
a => b
b => c
c => a
trap => b
x => y
y => b
Ma la rappresentazione inversa è meglio per la marcatura loop a cattivi punti di partenza, una volta che so che cosa i loop sono.
Quindi, ecco alcune domande:
- è un hash la struttura migliore per rappresentare i link simbolici?
- qual è il modo migliore per separare il grafico del file system per indicare i componenti loopy dai componenti dell'albero al ramoscello con pezzi di tipo loop?
- Esiste un algoritmo migliore rispetto alla ricerca manuale di tutti i loop da tutti i punti di partenza?
- Dal punto di vista della teoria dei grafi - questo tipo di cose è già presente nello CPAN? In caso contrario, quali sono alcuni buoni moduli di supporto?
La richiesta di codice di esempio per risolvere il problema è ovviamente anche incoraggiata. – Paul
Mostraci ciò che hai provato fino ad ora è anche incoraggiato. :) –
@brian Doh! L'ho visto principalmente come un problema ben preciso di qualcun altro, e non ho cercato di risolverlo oltre a riconoscere alcune delle insidie. – Paul