use Win32::OLE ; sub getVersion($){ return undef unless defined $_[0] ; my $vbsObject = Win32::OLE->new('Scripting.FileSystemObject') ; my $vbsFile = $vbsObject->getFile("$_[0]") ; return $vbsObject->GetFileVersion($vbsFile->{'Path'}) eq '' ? undef : $vbsObject->GetFileVersion($vbsFile->{'Path'}) ; }