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; }