Perl Excel OLE-> GetActiveObject get的随机永久卡住

我正在使用perl来处理batch file中的excel文件,该文件使用这种代码来为每个文件运行macros:

print strftime("[%H:%M] ", localtime(time)), "Handling file $path\n"; my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit'); print strftime("[%H:%M] ", localtime(time)), "OLE Created\n"; 

有时在数千次成功运行之后,这个过程就会在两个打印语句之间卡住,甚至几个小时后也不会发生。 在查看任务pipe理器时,Excel进程正在运行,如果我杀了它,那么进程将继续。

macros以Excel的方式结束到Application.Quit

有什么办法来设置这种甚至更好的某种超时,以解决这个问题? 我可以通过启动一个最终会杀死excel进程的线程来修复这个问题,在正常情况下在杀死之前停止线程,但是我希望得到一个更优雅的解决scheme。