Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从perl运行/usr/bin/time_Perl_Time - Fatal编程技术网

从perl运行/usr/bin/time

从perl运行/usr/bin/time,perl,time,Perl,Time,我正在尝试进行一些非常粗略的基准测试,因此我想从脚本中运行time命令。我有以下资料: #!/usr/bin/perl use strict; my $command = "/usr/bin/time -f \"%U,%S,%E,%P,%K,%M\" ..."; my $stats = `$command`; print "stats: $stats\n"; 0.15,0.03,0:00.44,43%,0,143808 stats: 不幸的是,该命令的结果似乎从未

我正在尝试进行一些非常粗略的基准测试,因此我想从脚本中运行
time
命令。我有以下资料:

#!/usr/bin/perl

   use strict;

   my $command = "/usr/bin/time -f \"%U,%S,%E,%P,%K,%M\" ...";
   my $stats = `$command`;
   print "stats: $stats\n";
0.15,0.03,0:00.44,43%,0,143808
stats:
不幸的是,该命令的结果似乎从未分配给
$stats
。当我执行脚本时,我得到如下结果:

#!/usr/bin/perl

   use strict;

   my $command = "/usr/bin/time -f \"%U,%S,%E,%P,%K,%M\" ...";
   my $stats = `$command`;
   print "stats: $stats\n";
0.15,0.03,0:00.44,43%,0,143808
stats:

因此,它似乎成功地运行了
time
命令,但将值打印到
STDOUT
,而不是将值分配给
$stats
。当我使用另一个命令时,如
ls
,它似乎能按预期工作。我在这里做错了什么?

time
写入标准错误,因此需要将其重定向到标准输出,以使用Perl的backticks捕获它

 my $command = "/usr/bin/time -f \"%U,%S,%E,%P,%K,%M\" ... 2>&1";

time
打印到stderr

$ /usr/bin/time -f "%U,%S,%E,%P,%K,%M" echo foo >/dev/null
0.00,0.00,0:00.03,10%,0,2352

$ /usr/bin/time -f "%U,%S,%E,%P,%K,%M" echo foo >/dev/null 2>/dev/null


$

因此,只需将
2>&1
添加到您的命令中。

使用
qq[/usr/bin/time…]
可以避免大量的转义。