标签: perl shellexecute
我需要从perl调用一些shell命令。这些命令需要相当长的时间才能完成,所以我希望在等待完成时看到它们的输出。
系统功能在完成之前不会给我任何输出。
exec 函数提供输出;但是,它从那一点退出perl脚本,这不是我想要的。
我在Windows上。有没有办法实现这个目标?
答案 0 :(得分:14)
Backticks或qx命令在单独的进程中运行命令并返回输出:
qx
print `$command`; print qx($command);
如果您希望查看中间输出,请使用open创建命令输出流的句柄并从中读取。
open
open my $cmd_fh, "$command |"; # <--- | at end means to make command # output available to the handle while (<$cmd_fh>) { print "A line of output from the command is: $_"; } close $cmd_fh;