I am currently working on code that creates something simliar to a trie structure. My implementation is pretty much trying to create a hash of hash, etc... which should be a problem as I believe I have enough memory.
I have come to a bit a pickle though. It might be that I have been working on this program for awhile and that it is late, but I have come to stopping point. For the life of my I am not able to implement a simple hash reference recursion. Let me explain with my code and expected output.
use strict;
use Data::Dumper;
my $start;
sub add{
my $root = shift;
my $level = shift;
my @items = @_;
if(!@items) {return;}
#print "level = $level\n";
while(@items) {
my $first = shift @items;
$root->{$first}->{count}++;
#print "\t" x $level . "first = " . $first . ", values = " . join(',',@items)."\n";
add($root->{$first}->{children}, $level+1, @items);
}
}
add($start, 1, 1..3);
add($start, 1, 1..2);
print Dumper($start);
Expected output
$VAR1 = {
'1' => {
'children' => {
'2' => {
'children' => {
'3' => { 'count'=>1}
},
'count' => 2},
'3' => {'count' => 1}
},
'count' => 2
},
'3' => {
'count' => 1
},
'2' => { 'children' => {
'3' => {
'count' => 1
}
},
'count' => 2
}
};
I realize its probably something really trivial that I am missing here, but any help is a appreciated.
Thanks
Alright, just an update. I believe I have found the problem.
use strict;
use Data::Dumper;
my $start = {};
sub add{
my $root = shift;
my $level = shift;
my @items = @_;
if(!@items) {return $level-1;}
#print "level = $level\n";
while(@items) {
my $first = shift @items;
$root->{$first}->{count}++;
if(!exists($root->{$first}->{children})) {$root->{$first}->{children}={};}
#print "\t" x $level . "first = " . $first . ", values = " . join(',',@items)."\n";
$root->{$first}->{max} = add($root->{$first}->{children}, $level+1, @items);
}
}
add($start, 1, 1..4);
add($start, 1, 1..2);
print Dumper($start);
I was passing hash reference that were undefined, which is not a good thing apparently. So, I fixed that problem.
perlmonks.org content © perlmonks.org and planetscape, thealienz1
prlmnks.org © 2006 edmund von der burg (eccles & toad)
v 0.03