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




Reply via email to