高爾夫球碼有人嗎?
#!/usr/bin/perl
use File::Spec;
my $g;
my $f = shift;
while (1) {
print $f;
$g = readlink($f);
last unless defined $g;
printf " -> %s\n", $g;
$f =~ s,/[^/]*$,,;
$f = File::Spec->rel2abs($g, $f);
}
print "\n";
好了,這個怎麼樣:
#!/usr/bin/perl
use File::Spec;
sub r {
my ($p, $s) = @_;
my $l = readlink $p;
if ($l) {
printf "%s -> %s\n", $p, $l;
$p =~ s,/[^/]*$,,;
r("",File::Spec->rel2abs($l,$p) . $s)
} else {
$s =~ s!^(/?[^/]+)(.*)! r($p.$1, $2) !e;
}
}
r("",shift);
輸出並不像描述的,但它是可以理解的。並挖掘該craaazy遞歸可執行正則表達式替換!
不知道這是你要求的,但有一個libc函數`realpath`和一個同名的GNU工具。 – asveikau 2011-01-08 05:44:08