Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: Correction to Database problem

by tachyon (Chancellor)
on Feb 15, 2003 at 15:41 UTC ( [id://235573]=note: print w/replies, xml ) Need Help??


in reply to Correction to Database problem

Sounds like what you need to do is use a hash:

# build a hash with son => father as key => value pairs my %sons; while(<DATA>) { chomp; next unless $_; my ($son, $father) = split /\s+/, $_; $sons{$son} = $father; } # make another hash keyed on the fathers that includes all their sons my %fathers; for my $son ( keys %sons ) { # find the father or $son from out %sons hash my $father = $sons{$son}; push @{$fathers{$father}}, $son; } # show the results: print "Son\tFather\n"; for my $son ( keys %sons ) { print $son, "\t", $sons{$son}, "\n"; } print "\n\nFather\tSon(s)\n"; for my $father ( keys %fathers ) { my @sons = @{$fathers{$father}}; my $sons = join " | ", @sons; print $father, "\t\t", $sons, "\n"; } __DATA__ 1 1 2 2 3 3 4 1 5 3 6 4 7 5 8 1 9 2

This will give you the following (which I presume is along the lines of what you are trying to do.

Son Father 1 1 2 2 3 3 4 1 5 3 6 4 7 5 8 1 9 2 Father Son(s) 1 1 | 4 | 8 2 2 | 9 3 3 | 5 4 6 5 7

cheers

tachyon

s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (4)
As of 2024-04-16 18:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found