min:sec,frac e.g. "5:29,11"
sec,frac e.g. "29,11"
sec e.g. "29"
,frac e.g. ",11"
min:sec e.g. "5:29"
someth. else e.g. "abc"
####
#!/usr/bin/perl
use strict;
use warnings;
# 855222
# 1) min:sec,frac e.g. "5:29,11"
# 2) sec,frac e.g. "29,11"
# 3) sec e.g. "29"
# 4) ,frac e.g. ",11"
# 5) min:sec e.g. "5:29"
# 6) someth. else e.g. "abc"
my $seconds;
my @times=("5:29,11", "29,11", "29:00", "29:00,3", "29:00,303","29:13,07", ",11", "0:11", "5:29", "abc", "1abc");
for my $time(@times) {
no warnings 'uninitialized';
if ($time =~ /[a-z]/i) { # won't catch non-"time-ish" symbols such as ?, #, @, etc
# $seconds = -1; # my personal preference is for an explicit error statement
print "Data not recognized: $time\n";
next;
} else {
($seconds = $time) =~ s<^(?:(\d+):)?(\d+)?(?:,(\d+))?$><$1*60+$2+$3/(10**length($3))>e;
}
print "$time = $seconds \n";
}
####
5:29,11 = 329.11
29,11 = 29.11
29:00 = 1740
29:00,3 = 1740.3
29:00,303 = 1740.303
29:13,07 = 1753.07
,11 = 0.11
0:11 = 11
5:29 = 329
Data not recognized: abc
Data not recognized: 1abc