Thanks...I guess I thought it was clearer than it actually was. What I wanted was similar to what you provided...but instead of each key being the file name, I want to be able to have a series of hashes in an array...such that it would be populated like:
The place I get lost in the code at the bottom is that the hash is returned...but I don't see how to take that and push it onto an array with the way the code was written
{name => 'pm_multi_line_match.pl', size => 1025}, 'pm_multi_mod_distro_test' => { 'My-Example' => { {name => 'Build.PL', size => 651}, ...etc
#!/usr/bin/env perl use strict; use warnings; use File::Find; use Data::Dumper; my $rootDir = '/tmp/somedir'; $Data::Dumper::Indent = 1; build_tree(my $tree, $rootDir); print Dumper($tree); sub build_tree { my $node = $_[0] = {}; my @s; find( sub { push @$node, (pop @s)->[1] while @s and $File::Find::dir ne $s[-1] +[0]; $node->{'name'} = $_ if -f; $node->{'size'} = -s if -f; # Here is where I am lost...How do I get this pushed into an array +? return $node if -f; push @s, [ $File::Find::name, $node ]; $node = $node->{$_} = {}; }, $_[1]); $_[0]{$_[1]} = delete $_[0]{'.'}; }
In reply to Re^2: directory tree to hash of arrays
by mabossert
in thread directory tree to hash of arrays
by mabossert
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |