[Israel.pm] Win32::TieRegistry question
Scott Weisman
sweisman at pobox.com
Mon Jul 9 15:48:49 EEST 2007
Hello,
I've had the need to do some Perl development on Windows. One of the
things I need to do is get all the DSNs available. I figured doing
this using the Registry was easier than using the ODBC API. After much
trial and error, this is what I got to work:
===BEGIN CODE
use Win32::TieRegistry ();
use Data::Dumper;
my $registry;
use Win32::TieRegistry (Delimiter => '/', ArrayValues => 0, TiedRef =>
\$registry, 'KEY_READ');
my $entry = $$registry{'LMachine/SOFTWARE/ODBC/ODBC.INI/'};
my $odbc_list = $$entry{'ODBC Data Sources/'};
print Dumper($entry), "\n"; # see note below
print Dumper($odbc_list), "\n";
===END CODE
Note 1: If I include this line, $odbc_list dumps this (which is correct):
$VAR1 = bless( {
'/TEMPDB' => 'Pervasive ODBC Engine Interface',
'/afw_davis' => 'SQL Server',
'/afw_moser' => 'SQL Server',
'/DEMODATA' => 'Pervasive ODBC Engine Interface',
'/DefaultDB' => 'Pervasive ODBC Engine Interface',
'/AGYFORMS' => 'Pervasive ODBC Engine Interface'
}, 'Win32::TieRegistry' );
However, if don't dump $entry first, all I get is this (which is incorrect):
$VAR1 = bless( {}, 'Win32::TieRegistry' );
Even if I just reference $entry, nothing happens. I have to dump it first.
Can someone please help me? This is driving me crazy!
Thanks,
Scott
More information about the Perl
mailing list