use strict;
use warnings;
my $INDENT=' 'x2;
my @aSorted=sort qw(/var/www/data/stuff
/var/www
/var/www/data/misc
/var/logs
/var/logs/data);
my $aLast=[];
foreach my $sPath (@aSorted) {
chomp $sPath;
my @aName = split(m{/}, $sPath);
for my $i (0..$#aName) {
if (($#$aLast<$i) || ($aLast->[$i] ne $aName[$i])) {
if ($i>1) { print '', $INDENT x ($i-1), '->'; }
print $aName[$i], "\n";
}
}
$aLast=\@aName;
}
####
var
->logs
->data
->www
->data
->misc
->stuff
####
use strict;
use warnings;
my $INDENT=' 'x2;
my @aUnsorted= qw(/var/www/data/stuff
/var/www
/var/www/data/misc
/var/logs
/var/logs/data);
my %hVisited;
foreach my $sPath (@aUnsorted) {
chomp $sPath;
my @aName = split(m{/}, $sPath);
for my $i (0..$#aName) {
my $k=join('/',@aName[0..$i]);
unless ($hVisited{$k}) {
if ($i>1) { print '', $INDENT x ($i-1), '->'; };
print $aName[$i], "\n";
$hVisited{$k}=1;
}
}
}
####
var
->www
->data
->stuff
->misc
->logs
->data