go ahead... be a heretic PerlMonks

### Problem with HOA.

by tamaguchi (Pilgrim)
 on Aug 28, 2006 at 07:03 UTC Need Help??
tamaguchi has asked for the wisdom of the Perl Monks concerning the following question:

Suppose you have following data stucture:
```my %hash=(
1=> [1.5, 2.1, 3.1],
2=> [1.2, 2.2, 3.2],
3=> [1.3, 2.3, 3.3],
)
How would you do in the easiest way to get out an array consisting of the first ellement in each of the internal valuearrays sorted by the keys? I.e. \$array[0]=1.5,  \$array[1]=1.2 and \$array[2]=1.3. Thank you fellow monk.

Replies are listed 'Best First'.
Re: Problem with HOA.
by cog (Parson) on Aug 28, 2006 at 07:10 UTC
my @array = map { \$hash{\$_}->[0] } sort { \$a <=> \$b } keys %hash;

That's the first solution that comes to my mind. Try reading it backwards:

1. Take the keys of the hash... (keys %hash)
2. ...sort them numerically... (sort { \$a <=> \$b } ...)
3. ...and get the first element of the array corresponding to each key in the hash... (map { \$hash{\$_}->[0] } ...)
Re: Problem with HOA.
by GrandFather (Sage) on Aug 28, 2006 at 07:13 UTC

Update wrong answer. cog has it right.

```use strict;
use warnings;

my %hash=(
1=> [1.5, 2.1, 3.1],
2=> [1.2, 2.2, 3.2],
3=> [1.3, 2.3, 3.3],
);

my @array = sort {\$a<=> \$b} map {@{\$hash{\$_}}} keys %hash;

print "@array";

Prints:

```1.2 1.3 1.5 2.1 2.2 2.3 3.1 3.2 3.3

DWIM is Perl's answer to Gödel

Create A New User
Node Status?
node history
Node Type: perlquestion [id://569938]
Approved by GrandFather
help
Chatterbox?
 [Eily]: same as many/much, few/little [Discipulus]: so my 'less' usage sounded not so correct? 'fewer' was more appropriate? i take a note too Discipulus \$ENV{PAGER}='fewer ' [Corion]: Discipulus: Hahahaa! ;) [Corion]: This would be a great April fools joke, since it certainly makes sense to show fewer pages on screen :) [marioroy]: greetings all [Corion]: Hi marioroy! [Corion]: I'm slowly thinking that IP::CloudHoster is a bad name. The module started out as a module to identify whether an IP address comes from a cloud hoster like AWS (or Google GCE, or Linode), but now I also added ...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (12)
As of 2018-01-23 09:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
How did you see in the new year?

Results (242 votes). Check out past polls.

Notices?