I have a hash of hashes data structure. Name of the hash is %pos2base2bin and using data dumper, these are the contents of the hash:
$VAR1 = { '315' => { '8' => 0 }, '329' => { '6' => 0 }, '352' => { '5' => 0 }, '390' => { '1' => 0 }, '280' => { '7' => 1 }, '360' => { '9' => 0 }, '349' => { '4' => 0 }, '305' => { '10' => 0 }, '380' => { '3' => 1 }, '251' => { '2' => 0 } };
I want to sort the second key numerically($a <=> $b) and then store the values(0's and 1's) in an array in the numerical order of the second keys. The goal is to print this array with values tab separated. My output should be like this:
sample 1 2 3 4 5 6 7 8 9 10 file1 0 0 1 0 0 0 1 0 0 0
I already have the header line starting with sample. Just have to place the respective values beneath it. How can I achieve this? This is what works for me but I think there must be an easier way to do it:
my %output=(); foreach my $k1(keys %pos2base2bin){ foreach my $k2 (sort{$a <=> $b} keys %{ $pos2base2bin{$k1} }){ push @{$output{$k2}},$pos2base2bin{$k1}{$k2} } } my @array=(); foreach my $k(sort{$a <=> $b} keys %output){ foreach my $val(@{$output{$k}}){ push @array,$val; } } print join("\t",$f,@array),"\n"; # $f is the filename

In reply to storing values of hash of hashes in an array based on numerical order of second key by v15

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.