Windows OLE - Checking The Registry

use Win32::OLE::Const;
my %Library;  # list of all registered type libraries

Win32::OLE::Const->EnumTypeLibs(sub {
  my ($clsid,$title,$version) = @_;
  return
    unless $version =~ /^([0-9a-fA-F]+)\.([0-9a-fA-F]+)$/;
  my ($maj,$min) = (hex($1), hex($2));
  $Library{$title} = "$maj.$min";
});

sub ExistsTypeLib {
  my $typelib = shift;
  return $Library{$typelib} if(exists $Library{$typelib});
  for my $lib (keys %Library) {
    return $Library{$lib}   if($lib =~ /^$typelib/);
  }
  return undef;
}