One nuance that AnomalousMonk is aware of but I wanted to clarify:

%key = sort keys %key;

Let's say you start with a hash that looks like this:

%key = ( foo => 'bar', bazz => 'bump', ping => 'pong', putt => 'pop', );

The line of code above would capture only the keys (as was mentioned) and would save them only into the hash, so after running that line you would have this:

%key = ( foo => 'bazz', ping => 'putt', );

This is because the output of keys will just be foo, bazz, ping, putt, and when you take a flat list like that and store it into a hash, it is interpreted as key/value pairs. So your new hash loses all the values, and makes value out of half of the keys. If there are an odd number of keys, one of the new keys gets undef as its value, too.

If we were to break the assignment down to steps it would look more like this:

%key = ( foo => 'bar', bazz => 'bump', ping => 'pong', putt => 'pop', ); my @keys = keys %key; # foo, bazz, ping, putt %key = @keys; foo => bazz, ping => putt

The sorting, itself is irrelevant because storing things in a hash loses any concept of order.


Dave


In reply to Re^2: Hash ordering by davido
in thread Hash ordering by solocazzimiei

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.