# test-> a.plcome ottenere il percorso assoluto per il file symlink?
my $file = '/home/joe/test';
if (-f $file && -l $file) {
print readlink($file) ;
}
come ottenere il percorso assoluto per il file link simbolico?
# test-> a.plcome ottenere il percorso assoluto per il file symlink?
my $file = '/home/joe/test';
if (-f $file && -l $file) {
print readlink($file) ;
}
come ottenere il percorso assoluto per il file link simbolico?
Cwd fornisce tale funzionalità per abs_path.
#!/usr/bin/perl -w
use Cwd 'abs_path';
my $file='/home/joe/test';
if(-f $file && -l $file) {
print abs_path($file);
}
Attenzione, probabilmente andrà male quando i nomi file UTF-8 sono in uso. In tal caso qualcosa come 'Encode :: decode_utf8 (Cwd :: abs_path ($ file));' potrebbe essere necessario! –
se si utilizza File :: Spec rel2abs con readlink si otterrà il percorso addominali, anche se si tratta di un link simbolico ad un altro link simbolico
use File::Spec;
$path = File::Spec->rel2abs(readlink($file)) ;
File :: Spec rel2abs non sembra funzionare con più collegamenti. Abs_path di Cwd funziona. Prova 'touch/tmp/target; ln -s target/tmp/link1; ln -s link1/tmp/link2' e confronta 'perl -MFile :: Spec -e '$ f ="/tmp/link2 "; stampa "$ f:", File :: Spec-> rel2abs (readlink ($ f)), "\ n" ''con' perl -M'Cwd "abs_path"' -e '$ f = "/ tmp/link2 "; stampa "$ f:", abs_path ($ f), "\ n" '' – mivk
Grazie per aver provato che specificare i soft link senza il prefisso del percorso quando non si è nella stessa directory si romperà le cose ed è, quindi, un brutto cosa da fare ;-) – iain
Devo anche precisare che l'OP ha richiesto il ["percorso assoluto del file il collegamento simbolico punta a"] (http://stackoverflow.com/questions/4887672/how-to-get- the-absolute-path-for-symlink-file # comment-5437184) e * not * il percorso canonico (che è un percorso assoluto ma _na necessariamente_ il file richiesto)? – iain
Stai dicendo che desidera che il percorso assoluto del collegamento simbolico o il percorso assoluto del file il link simbolico punta a? – iain
percorso assoluto del file il collegamento simbolico punta a – Tree
Quindi in realtà vuoi solo sapere come ottenere il percorso assoluto per un dato pathname, perché sai già come usare 'readlink()' per ottenere un percorso verso il puntatore file. –