my @dirs = (
'0555-DDBB/AirPhotos',
'0555-DDBB/AirPhotos/AP Labels',
'0555-DDBB/AirPhotos/new database',
'0555-DDBB/FOO M',
'0555-DDBB/FOO M/0555-055-01 Site/Photos',
'0555-DDBB/FOO M/0555-055-01 Site/Photos/Digital',
'0555-DDBB/FOO M/0555-055-01 Site/Photos/PhotoList',
'0555-DDBB/FOO M/0555-055-01 Site/Reports/Summary',
'0555-DDBB/FOO M/0555-055-01 Site/Reports/Daily',
'0555-DDBB/FOO M/0555-055-02 Design',
'0555-DDBB/FOO M/0555-055-02 Design/photo',
'0555-DDBB/FOO M/0555-055-02 Design/photo/Ortho',
'0555-DDBB/FOO M/0555-055-02 Design/Correspondance',
'0555-DDBB/FOO M/0555-055-02 Design/Drafting',
'0555-DDBB/FOO M/0555-055-02 Design/Drafting/DWG',
);
use strict;
my %tree;
for my $d (@dirs) {
my $n = \%tree;
$n = ($n->{$_} = exists $n->{$_} ? $$n{$_} : {})
for split('/', $d);
}
print_tree(\%tree, 0);
sub print_tree {
my($tree, $indent) = @_;
for(keys %$tree) {
print " " x $indent, $_, $/;
print_tree($tree->{$_}, $indent + 1)
if ref $tree->{$_} and keys %{$tree->{$_}} > 0;
}
}
__output__
0555-DDBB
AirPhotos
AP Labels
new database
FOO M
0555-055-02 Design
Drafting
DWG
photo
Ortho
Correspondance
0555-055-01 Site
Reports
Daily
Summary
Photos
Digital
PhotoList
So firstly we build a convenient data structure using references to references, and then we recurse through the tree we built printing out the keys. Easy as pie! Mmmm, pie ...
HTH
_________ broquaint |