A while loop always prints keys in the order they appear in the hash. To get the keys in the right order, you need a slightly different technique: (a) extract the keys (b) sort them (c) use a foreach loop to visit each key (d) for each key query the hash to get the value. The code to print out the hash would look something like this:
# keys %foo: extracts the keys from hash %foo # and returns them as an array # # sort @foo: sorts the elements of array @foo # # foreach: loops through the my @aKeys = sort(keys(%hSequences)); foreach my $k (@aKeys) { my $v = $hSequences{$k}; #get value $k =~ s/ / gid=/; print ">$k\n" . join("\n", sort @$v) . "\n"; }
For more information, see keys and sort.
I'm assuming the number of keys is a lot less than 2G and that you have enough memory to hold the keys and sort them. If not, there are some other things that can be done to sort a super large key list, but see first you can do without getting fancy.
Good luck and great work!
Best, beth
In reply to Re^3: array of arrays - printing data
by ELISHEVA
in thread array of arrays - printing data
by sugar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |