2016-12-06 89 views
1

我有一个问题,这是我放弃之前的最后一招,我宁愿用Perl的noob,我已经到达了搜索解决方案的互联网末端。Perl自定义运行时间格式

***我没有安装任何软件许可所以它必须是原产于Perl5的

我有一个剧本,我需要计算00.00“分钟脚本的总运行时间,并输出结果.seconds“存储在一个变量中。

这里是一个失败的尝试:

#!/usr/bin/perl 
use Time::Piece; 
use POSIX qw(strftime); 

my $start = localtime->strftime($unixtime); 
sleep(10); 
my $end = localtime->strftime($unixtime); 
my $diff = $end - $start; 
my $runtime = printf("%M.%S", $diff); 
print $runtime; 

我肯定已经打了这个有点和能得到“10”秒的结果,但是这不是正确的格式。如果脚本运行了10秒,则输出应为“00.10”。

如果脚本跑了1分55秒,输出应该是“01.55”。

这有什么办法可以做到吗? 我搜索了这一点,并发现1条然而,甚至还没有接近... REF:perl different time format output

+2

[转换秒至使用Perl天,小时,分钟]可能的复制(http://stackoverflow.com/questions/32564093/convert-seconds-to-days-hours-minutes-using-perl) – AbhiNickz

回答

1

这应该做的伎俩:

#!/usr/bin/perl 
use Time::Piece; 

my $start = localtime; 
sleep(10); 
my $end = localtime; 
my $diff = $end - $start; 
my $minutes = int $diff->minutes; 
my $seconds = $diff->seconds % 60; 
my $output = sprintf '%02d.%02d', $minutes, $seconds; 
print "$output\n"; 
+0

非常感谢大卫!我知道我很接近,但没有足够的知识我猜想%02d会把它带到小数点! – Autonomic

+0

不错。我对以前的文章深感遗憾。我真的认为你需要指标。这不是广告CPAN模块的便宜尝试。 –

2

无需时间::海贼王!

my $start = time; 
sleep(10); 
my $end = time; 
my $diff = $end - $start; 
my $runtime = sprintf '%d:%02d', int($diff/60), $diff % 60; 
print "$runtime\n";