On Feb 10, 2006, at 5:41 PM, Bruce Van Allen wrote:
foreach my $facet_key (keys %facets) {
print "$facet_key\n";
my %sub_hash = %{ $facets{$facet_key} };
foreach my $sub_key (keys %sub_hash) {
print "\t$sub_key\n";
my %inner_hash = %{ $sub_hash{$sub_key} };
foreach my $inner_key (keys %inner_hash) {
print "\t\t$inner_key - $inner_hash{$inner_key}\n";
}
}
}
This has been VERY helpful, and I appreciate the assistance. Now I
need to programatically build the hash.
I have this sample data structure:
my %profile = (
'subjects' => {
'astronomy' => {
'telescope world' => 'http://telescope.com',
'stars r us' => 'http://websters.com',
'asto magazine' => 'http://oxford.edu'
},
'mathematics' => {
'2 + 2 = 4' => 'http://catalog.nd.edu',
'math library' => 'http://worldcat.com'
}
},
'tools' => {
'dictionaries' => {
'websters' => 'http://websters.com',
'oxford' => 'http://oxford.edu'
},
'catalogs' => {
'und' => 'http://catalog.nd.edu',
'worldcat' => 'http://worldcat.com'
}
}
);
I use the followign code, based on the good work of Bruce, to
traverse %profile and output a set of nested HTML lists. It works for
any size of %profile. Fun!
print "<ul>";
foreach my $facet (sort(keys(%profile))) {
print "<li>$facet";
my %facets = %{$profile{$facet}};
print "<ul>";
foreach my $term (sort(keys(%{$profile{$facet}}))) {
print "<li>$term";
my %terms = %{$facets{$term}};
print "<ol>";
foreach my $resource (sort(keys(%terms))) {
print "<li><a href='$facets{$term}{$resource}'>$resource</
a></li>";
}
print "</ol>";
print "</li>";
}
print "</ul>";
print "</li>";
}
print "</ul>";
I now need to build %profile programatically. As I loop through a set
of information resources I can determine the following values:
1. resource name (ex: telescope world)
2. URL (ex: http://telescope.com)
3. term (ex: astronomy)
4. facet (ex: subjects)
Given these values, how can I build %profile?
--
Eric "Perl Data Structures !R My Forte" Morgan