use Win32::OLE qw(EVENTS); unless (defined $ie) { $ie = Win32::OLE->new('InternetExplorer.Application') or die "Oops, cannot start IE"; } $ie->Navigate('c:\some_dir\some_doc.htm'); while ($ie->Busy) {} $ie->{Visible} = 1; Win32::OLE->MessageLoop(); Win32::OLE->WithEvents($ie, \&Ev);