【发布时间】:2015-01-01 13:53:21
【问题描述】:
在我的 PERL 代码中,我需要使用 windows 命令提示符执行一些操作,例如打开记事本 ie
system("start notepad");
现在我观察到 perl 在前一个语句完成之前不会移动到下一个语句。有没有什么办法可以在向系统发送命令后,perl 移动到下一条语句而不检查系统任务是否结束。
我制作了一个示例代码来解释我的问题。我在这里显示了每个任务后的时间。
use Time::HiRes qw(time);
use POSIX qw(strftime);
####################printing time code starts###########
$t = time;
$date = strftime "%Y%m%d %H:%M:%S", localtime $t;
$date .= sprintf ".%03d", ($t-int($t))*1000; # without rounding
print "Statement 1 executed at $date\n";
#######################printing time code ends###########
####################printing time code starts###########
$t = time;
$date = strftime "%Y%m%d %H:%M:%S", localtime $t;
$date .= sprintf ".%03d", ($t-int($t))*1000; # without rounding
print "Statement 2 executed at $date\n";
#######################printing time code ends#####
system("start notepad");
####################printing time code starts###########
$t = time;
$date = strftime "%Y%m%d %H:%M:%S", localtime $t;
$date .= sprintf ".%03d", ($t-int($t))*1000; # without rounding
print "Statement 3 executed at $date\n";
我的输出是:
Statement 1 executed at 20150101 19:09:37.614
Statement 2 executed at 20150101 19:09:37.614
Statement 3 executed at 20150101 19:09:37.647
显然,声明 2 和声明 3 之间存在很大差异,我想避免它。请提出建议。
注意:启动记事本只是一个示例,我可能想将 100MB 文件从 1 个文件夹复制到另一个文件夹,并且我不希望 perl 在向系统发送命令后等待。
【问题讨论】: