%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.
|