Oh my. There's a lot of Perl gunslingers around here. Here's my Perl baby-talk approach. Nobody laugh! :)

#!/usr/bin/perl use strict; use warnings; my %hoh; $hoh{'FILENAME1'}{'A'}{'weight'}=3000; $hoh{'FILENAME1'}{'A'}{'intensity'}=2; $hoh{'FILENAME1'}{'B'}{'weight'}=4000; $hoh{'FILENAME1'}{'B'}{'intensity'}=3; $hoh{'FILENAME2'}{'D'}{'weight'}=2000; $hoh{'FILENAME2'}{'D'}{'intensity'}=7; $hoh{'FILENAME2'}{'C'}{'weight'}=5000; $hoh{'FILENAME2'}{'C'}{'intensity'}=3; $hoh{'FILENAME3'}{'C'}{'weight'}=1000; $hoh{'FILENAME3'}{'C'}{'intensity'}=4; $hoh{'FILENAME3'}{'A'}{'weight'}=6000; $hoh{'FILENAME3'}{'A'}{'intensity'}=3; # Let's flatten %hoh out, and store what we care about in this # array of references to arrays. my @by_weights = (); # Populate @by_weights. for my $key_in_hoh (keys %hoh) { for my $key_in_fin (keys %{$hoh{$key_in_hoh}}) { for my $key_in_let (keys %{$hoh{$key_in_hoh}{$key_in_fin}}) { # We'll fix the intensity value later. if ($key_in_let eq 'weight') { push @by_weights, [ $key_in_let, $hoh{$key_in_hoh}{$key_in_fin}{$ke +y_in_let}, 'intensity', 0, # Fill in correct value later. $key_in_fin, $key_in_hoh, ]; } } } } # Correct the intensity values. for (@by_weights) { my ( $key_in_hoh, $key_in_fin ) = ( $_->[5], $_->[4] ); $_->[3] = $hoh{$key_in_hoh}{$key_in_fin}{intensity}; } # Now, sort by weight. @by_weights = sort { $a->[1] <=> $b->[1] } @by_weights; for (@by_weights) { print "${$_}[0]: ${$_}[1] $_->[2]: ${$_}[3] filename: $_->[5]\n"; }

In reply to Re: HoH problem by j3
in thread HoH problem by tamaguchi

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.