Addendum: I've chosen to use single quotes for the output rather than double quotes, for the simple reason of keeping the output more or less copy/pastable (of course, copypastability gets lost as soon as a value is actually a reference, but if that is an issue I recommend something like Data::Dumper to you). Consider this template:

And you were to put in the output of my above script, it'd nicely print 'three' => '3', 'one' => '1', 'foo' => '$foo', 'two' => '2', . Had I used double quotes for the output of the original script and pasted its result into the template, I would've gotten some bothersome errors.

Global symbol "$foo" requires explicit package name at G:\x.pl line 6.
Execution of G:\x.pl aborted due to compilation errors.