package operations; # Package name Win32::OLE->Initialize(); # first line of my package no warnings; use Win32::OLE; sub init{ # this funtion is called by script $RQCC = Win32::OLE->new("rqccdriver.ExternalInterface.1") || die "CreateObject: $!"; my $EventQueueTread = Thread->new(\&MonitorEventQueue, ($self, $Id)); # do other stuff } sub MonitorEventQueue { my $self = shift; my $Id = shift; $EventQueueTread->detach; my $Devicehandle= Win32::OLE->GetActiveObject("rqccdriver.ExternalInterface"); # do stuff }