in reply to Select quuery result sets
By definition, the keys in a hash are unordered.
If you need to work with columns in a particular order, simply create a separate array-variable containing the column names in the order that you need. (Construct this array in the same logic that is building the SELECT statement.) Then, iterate through that array to get each successive column-name, and use that column-name to fetch the data from the hash.
Notice that the order of the columns in the SELECT statement will no longer matter: the only thing that matters is the order of the names in the array.
In the spirit of creating robust, reliable, self-diagnosing code, you should verify that every column-name you’re looking for does, in fact, exist in the row-data hashref. It would be an extremely easy thing to make a “tpyo” here, with the consequence that a column of data would never show up in the output... and, maybe, no one would immediately notice the bug. The code should assert that every single column-name must exist (even if the value is NULL), and, IMHO, should die if it does not.