in reply to Order hash results

You can't fetch N items from the hash without having something that loops N times. That doesn't mean it has to be a foreach loop. It can be written more succinctly than what you posted by using a hash slice.

What you posted is equivalent to

push @request, @result{ @field_names };

If the previous statement was my @request;, you can incorporate it as follows:

my @request = @result{ @field_names };