Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: Re: recursive complex structure or something like that?

by Isanchez (Acolyte)
on Jul 28, 2003 at 22:48 UTC ( #278654=note: print w/replies, xml ) Need Help??


in reply to Re: recursive complex structure or something like that?
in thread recursive complex structure or something like that?

Dear Saint Diotalevi

thank you so much for your reply,

I used the input file:

1 0 domestic_animal 2 1 dog 3 2 terrier 4 2 collie 5 3 fox_terrier
I used your code (only modified for input):
$in = "sample.txt"; open (IN, $in) or die "cant open the in\n"; # my %dict; # A reverse index on %dict by id. # my %dict; # A reverse index on %dict by id. while (not eof (IN)) { $line = <IN>; my ( $id, $parent, $term ) = split (' ', $line, 3) ; $dict{$id}{'id'} = $id; $dict{$id}{'parent'} = $parent; push @{$dict{$parent}{'children'}}, $dict{$id}; } use Data::Dumper; print Dumper( \ %dict );

and this is what i get:

$VAR1 = { '4' => { 'parent' => '2', 'id' => '4' }, '1' => { 'parent' => '0', 'children' => [ { 'parent' => '1', 'children' => [ { 'parent' => '2' +, 'children' => [ + { + 'parent' => '3', + 'id' => '5' + } ] +, 'id' => '3' }, $VAR1->{'4'} ], 'id' => '2' } ], 'id' => '1' }, '3' => $VAR1->{'1'}{'children'}[0]{'children'}[0], '0' => { 'children' => [ $VAR1->{'1'} ] }, '2' => $VAR1->{'1'}{'children'}[0], '5' => $VAR1->{'1'}{'children'}[0]{'children'}[0]{'children' +}[0] };

what I would need is a print out such that each mother term has all its descendents printed to right.

Am I doing something wrong?

Thank you very much, Ivo

Replies are listed 'Best First'.
Re: Re: Re: recursive complex structure or something like that?
by diotalevi (Canon) on Jul 28, 2003 at 22:53 UTC

    No, its just that the code I originally provided doesn't assume we know what the root is. If you follow $dict{1} you'll notice that everything works out alright. So the data is correct, you just may be mistaken on what you think the correct answer is (and that also handles cycles. You should use my second example with weaken(). The first example leaks memory).

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://278654]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (13)
As of 2019-10-17 13:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Notices?