The quickest way would be to have another hash, with a name to socket name lookup... i.e.
$socket = 'socketa'; $connections{$socket} = {}; $connections{$socket}{name} = 'Bob'; $sockets{Bob} = $socket; #to access it $connections{$sockets{Bob}};
Of course... if you are only going to be accessing sockets by the "name", then you should consider using that as the key and storing the socket key somewhere else. But that is if name will be the only way you key in.

The other way is to write a for loop to iterate through the hash and find it

my $socket; my $name = 'Bob'; for my $key (keys %connections) { if($connections{$key}{name} eq $name) { $socket = $_; last; } } print "$socket is the socket for $name\n";
Also, when accessing a hash value you should prepend the hash with a $, not a %, as so:
$connections{socket}{username} = "Bob";
See Tye's References Quick Reference

                - Ant
                - Some of my best work - (1 2 3)


In reply to Re: Accessing Multilevel Hash Values by suaveant
in thread Accessing Multilevel Hash Values by Putzfrau

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.