Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Issues with Hashes

by jedikaiti (Friar)
on Mar 23, 2010 at 17:22 UTC ( #830342=perlquestion: print w/ replies, xml ) Need Help??
jedikaiti has asked for the wisdom of the Perl Monks concerning the following question:

So I have this hash:

my %Verbs = ( "arm" => { description => " A prerequisite command for a potentially hazardous command. ", discrete => 1, }, "close" => { description => " Mechanically close a device controlled by the command element. \\emph{close} works in conjunction with the \\emph{open} verb. ", discrete => 1, }, "disable" => { description => " Deactivate a capability or function. \\emph{disable} works in conjunction with the \\emph{enable} verb. ", discrete => 1, }, "dump" => { description => " Copy a specific data buffer of the command element to telemetry. ", discrete => 0, }, "enable" => { description => " Activate a capability or function. \\emph{enable} works in conjunction with the \\emph{disable} verb. ", discrete => 1, }, );

And I want to iterate through it, in order, to get the key, description, and discrete values. This is driving me nuts. I looked at this post about hashes of hashes in Q&A, but it's just not working, so I decided to dial it back and go one step at a time.

First step: iterating through and getting the keys:

foreach my $cmd (keys %Verbs){ print("Command: $cmd \n"); }

This works, gets all the keys, but not in order.

So my questions, dear Monks, are as follows:
1) How do I get it to iterate in order? (i.e., "arm", "close", "disable", "dump", "enable")
2) Once I get that, how do I get the discrete and description values for each?

Thanks!

Kaiti

Comment on Issues with Hashes
Select or Download Code
Re: Issues with Hashes
by jedikaiti (Friar) on Mar 23, 2010 at 17:33 UTC

    Many thanks to wfsp, who pointed out in the CB that I can sort the keys. That answers question #1!

    Kaiti
Re: Issues with Hashes
by ssandv (Hermit) on Mar 23, 2010 at 17:38 UTC

    sort keys is the answer to the first part. sort is pretty useful for getting a list in order, and pretty powerful in that it lets you use your own sort order if you want.

    As for the second part, $Verbs{$cmd} will be a hashref (the value associated with the key $cmd ), and you can then look at $Verbs{$cmd}{discrete} to see the value there.

      Thanks!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://830342]
Approved by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (8)
As of 2014-08-22 05:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (147 votes), past polls