Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: iterating through a 2 dimensional hash

by DrManhattan (Chaplain)
on Apr 06, 2003 at 13:09 UTC ( [id://248430]=note: print w/replies, xml ) Need Help??


in reply to iterating through a 2 dimensional hash

#!/usr/bin/perl use strict; my %coord_; $coord_{"AB"}{1} = [420,520,870]; $coord_{"AB"}{2} = [220,520,470]; $coord_{"AB"}{6} = [320,320,270]; $coord_{"AB"}{7} = [520,720,370]; $coord_{"AB"}{8} = [620,520,670]; $coord_{"PL"}{12} = [420,520,570]; $coord_{"PL"}{13} = [220,520,170]; $coord_{"B"}{2} = [320,720,670]; $coord_{"B"}{4} = [520,520,170]; $coord_{"B"}{5} = [620,820,370]; foreach my $key1 (sort keys %coord_) { foreach my $key2 (sort keys %{$coord_{$key1}}) { printf "%s %d = X:%d, Y:%d, Z:%d\n", $key1, $key2, @{$coord_{$key1}{$key2}}; } }
The ordering of output isn't quite what you wanted, but that can't be helped with a hash, since it doesn't preserve the order in which you insert the elements.

-Matt

Replies are listed 'Best First'.
Re: Re: iterating through a 2 dimensional hash
by graff (Chancellor) on Apr 07, 2003 at 01:36 UTC
    The ordering of output isn't quite what you wanted, but that can't be helped with a hash, since it doesn't preserve the order in which you insert the elements.

    That is, it could only be helped if you take the trouble to specify a non-canonical order external to the hash, e.g.:

    my @key1_order = qw/AB PL B/; ... foreach my $key1 ( @key1_order ) { ... }
    or assign sortable values within the hash (which could be worked into the hash-creation process):
    $coord_{AB}{order} = 1; $coord_{PL}{order} = 2; $coord_{B}{order} = 3; ... foreach my $key1 ( sort { $coord_{$a}{order} <=> $coord_{$b}{order} } +keys %coord_ ) { ... }
Re: Re: iterating through a 2 dimensional hash
by Baz (Friar) on Apr 06, 2003 at 13:16 UTC
    The order doesnt matter actually - thanks for your help, your solution worked perfectly.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://248430]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others admiring the Monastery: (7)
As of 2024-03-28 11:34 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found