Thanks for your code.
It took me some time to understand. But sorry maybe I didn't catch the point, for I didn't see how you resolve the problem of 32bit program accessing a 64bit program's registry in 64bit OS
In fact, any trying of accessing to "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" will be redirected to "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\" automatically. That means I can never get content of "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" branch, which is what I want using a 32bit Perl program and different from "HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\"
The Perl code I wrote is like what you have written somewhat, but didn't work as I wished. I spent a lot of time to check why I didn't get the correct content as seeing from regedit. Later I understand by searching websites that the WoW64 is doing the redirecting...