my $node = my $tree = [];
my @stack;
####
if ($token eq '(') {
push @{ $node }, [];
push @stack, $node;
$node = $node->[-1]; # the new empty array ref
}
####
if ($token eq ')') {
$node = pop @stack;
}
####
$a = $b = [];
$a = 2;
####
#!/usr/bin/perl -w
use File::Find;
use Data::Dumper;
use strict;
$Data::Dumper::Indent = 1;
build_tree(my $tree, shift);
print Dumper $tree;
{
sub build_tree {
my $node = $_[0] = {};
my @s;
find( sub {
# fixed 'if' => 'while' -- thanks Rudif
$node = (pop @s)->[1] while @s and $File::Find::dir ne $s[-1][0];
return $node->{$_} = -s if -f;
push @s, [ $File::Find::name, $node ];
$node = $node->{$_} = {};
}, $_[1]);
$_[0]{$_[1]} = delete $_[0]{'.'};
}
}