#!/usr/bin/env perl -w use strict; use Win32API::Registry 0.21 qw( :ALL ); &main; sub getRegistryKeys { my ($hKey,$sKey,$sValue) = @_; my ($type, $data, $error, $key); RegOpenKeyEx( $hKey, $sKey, 0, KEY_READ, $key) or warn "Can't open $hKey\\$sKey: ", regLastError(),"\n"; $error = regLastError(); print "\nError after open: $error"; return "error" if ($error ne ""); RegQueryValueEx( $key, $sValue, [], $type, $data, [] ) or warn "Can't read $hKey\\$sKey: ", regLastError(),"\n"; $error = regLastError(); print "\nError after query: $error"; if ($error ne ""){ RegCloseKey( $key ) or warn "Can't close $hKey\\$sKey: ", regLastError(),"\n"; return "error"; } RegCloseKey( $key ) or warn "Can't close $hKey\\$sKey: ", regLastError(),"\n"; return "error" if ($error ne ""); return $data; } sub main { my $ret; $ret = getRegistryKeys(HKEY_LOCAL_MACHINE,"SOFTWARE\\ActiveState\\ActivePerl1","CurrentVersion"); if ($ret =~ /error/) { print "\nFound error in first attemp..."; $ret = getRegistryKeys(HKEY_LOCAL_MACHINE,"SOFTWARE\\ActiveState\\PerlScript\\1.0","InstallDir"); print "\nSecond attemp: $ret"; } else { print $ret; } }