Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much

Re^2: Hash ordering

by davido (Cardinal)
on Apr 14, 2020 at 22:07 UTC ( #11115538=note: print w/replies, xml ) Need Help??

in reply to Re: Hash ordering
in thread Hash ordering

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.


Log In?

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

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (6)
As of 2021-04-20 01:39 GMT
Find Nodes?
    Voting Booth?

    No recent polls found