well yes, I currently use JSON to do a similar recursive directory list output, where I don't need to retain the order of the pages:
use strict;
use warnings;
use JSON;
sub rec_tree {
my $n = $_[0] = {};
my @s;
find( sub {
$n = (pop @s)->[1] while @s and $File::Find::dir ne $s[-1][0];
return $n->{$_} = data_me($_) if -f;
/$bandir/ and $File::Find::prune = 1;
/$hidedir/ and $File::Find::prune = 1;
push @s,[ $File::Find::name,$n ];
$n = $n->{$_} = {};
}, $_[1]);
$_[0]{$_[1]} = delete $_[0]{'.'};
}
my $out;
rec_tree($out,shift);
my $jsout = JSON->new->allow_nonref->encode($out);
but as I mentioned, a similar recursive approach to parsing the @path data above defeats me, hence the hard coding, which at least retains the correct order in the output..
|