Re your use of a hash and your desire to omit the "first" element: You should understand that the order of a hash's elements is not defined; that is, the order in which you create the elements will be the order in which the elements are processed only by chance, absent use of sort or a Tie::... modules.
While the order of hash elements is not defined, for a given hash, the keys will be returned in a consistent order as long as the hash is not altered. The OP's desire to generate the n possible lists of n - 1 elements (key/value pairs) from a list of n elements is consistent with the use of a hash.