Win32::OLEでInternetExplorer.Applicationを呼ぶときは

新しいウインドウをつくってよいのであれば

use Win32::OLE;
my $ie = Win32::OLE->new('InternetExplorer.Application')
      or die Win32::OLE->LastError;  

でよいわけですが、既存のIEを再利用したい場合は、巷によく見られる(そしてPowerPointなどの例では意図した通りに動作する)

use Win32::OLE;
my $ie = Win32::OLE->GetActiveObject('InternetExplorer.Application')
      || Win32::OLE->new('InternetExplorer.Application')
      || die Win32::OLE->LastError;

のようなコードではだめで(IEの場合はかならず後者が呼ばれてしまう)、

use Win32::OLE;
my $shell = Win32::OLE->new('Shell.Application') or die Win32::OLE->LastError;
my $ie = $shell->Windows->Count
           ? $shell->Windows->Item(0)
           : Win32::OLE->new('InternetExplorer.Application');

のような感じにしないといけないらしい。

#もちろん厳密にやるならさらに$shell->Windows->Countを境界にループを回して$shell->Windows->Itemなどから目的のIEを選択する必要がある。

詳細は調べていませんが、とりあえず下記が参考になりました。

http://vsug.jp/tabid/63/forumid/72/postid/1115/view/topic/Default.aspx