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