sub timespan2seconds { my $ts = shift; my $sc = 0; if ($ts =~ m/(?:(\d+)\s+)?(\d+):(\d+)(?::(\d+))?/) { $sc += $1 || 0; $sc *= 24; $sc += $2; $sc *= 60; $sc += $3; $sc *= 60; $sc += $4 || 0; } else { my @pt = $ts =~ m/(\d+)([dhms])/g; my %sf = ( 'd' => 24 * 60 * 60, 'h' => 60 * 60, 'm' => 60, 's' => 1 ); $sc += shift(@pt) * $sf{shift(@pt)} while (@pt); } return $sc; }