【发布时间】:2016-11-23 18:17:35
【问题描述】:
我正在尝试使用以下命令在 Perl 脚本中打开 xlsx 文件:
system("path_to_file\\file.xlsx");
该文件已打开,但它保持 perl 进程挂起,直到我关闭 .xlsx 文件。我怎样才能避免这种情况?
文件file.xlsx 是在perl 脚本中创建的。在执行结束时,我希望它显示给用户(就像您手动打开它一样)并且它可以工作,但它会保持 perl 进程挂起,直到我关闭它。
【问题讨论】:
-
system(1, $file)将运行命令并立即返回,而无需等待子进程完成。 -
好的,我明白了。不过,
system执行命令,而您的示例“运行”一个 Excel 文件!我很惊讶它的工作原理。你想运行一个显示文件的应用程序,比如office等。 (希望是更轻松的东西。)所以你想以 非阻塞 的方式来做。请参阅 tanktalus 对于 Windows 的评论。 -
@zdim:Windows 使用文件类型来确定使用什么程序来打开它。因此,在命令行中输入 .xlsx 文件的名称将导致使用 Excel 打开它,就像输入
main.pl会导致使用perl.exe打开和运行文件一样。 -
@Tanktalus:重要的是说这只能在 Windows 上运行。
-
@zdim:大多数情况下,您会想要对文件做一些有用的事情。您可以使用
Win32::OLE打开和控制相应的应用程序,或者在某些情况下,例如这个,有逆向工程库可以让您在不使用应用程序的情况下做很多事情。