2016-12-06 93 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";