Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
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 perusing the Monastery: (9)
As of 2015-05-23 00:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    In my home, the TV remote control is ...









    Results (465 votes), past polls