I had the same problem after switching to Win32::TieRegistry. I get this on the server:
D:\>perl -V
Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
Platform:
osname=MSWin32, osvers=4.0, archname=MSWin32-x86-multi-thread
[...]
D:\>test.pl
path SOFTWARE\Microsoft\Microsoft SQL Server
subkeys:
values: 100\, 90\, DACFramework\, DACProjectSystem\, RefCount\, Servic
+es\, SharedManagementObjects\, SqlPubWiz\, TSqlLanguageService\
Can't read SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names key:
+ The system could not find the environment option that was entered
However, running regedit and exporting the registry gives me this:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance N
+ames]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance N
+ames\OLAP]
"MSSQLSERVER"="MSAS10_50.MSSQLSERVER"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance N
+ames\RS]
"MSSQLSERVER"="MSRS10_50.MSSQLSERVER"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance N
+ames\SQL]
"MSSQLSERVER"="MSSQL10_50.MSSQLSERVER"
Upgrading to ActiveState Perl 5.16.1 (the most current version), fixed everything. Curiously, the archname above says "x86" but i downloaded and installed the 64-bit version. I'm now wondering if the 32-bit and 64-bit versions of the Win32 registry APIs see different things.