sub duration { my $seconds = shift; my ($string, $flag); my @elements = ( { label => "years" }, { label => "days" }, { label => "hours" }, { label => "mins" }, { label => "secs" }, ); ( $elements[4]{value}, $elements[3]{value}, $elements[2]{value}, $elements[0]{value}, $elements[1]{value} ) = (gmtime($seconds))[0..2,5,7]; $elements[0]{value} -= 70; for my $element ( @elements ) { my $label = $element->{label}; $label = substr($label, 0, -1) if $element->{value} == 1; $string .= sprintf("%d $label ", $element->{value}, $flag = 1) if $element->{value} || $flag; } return $string }