use strict; use warnings; my $seconds; # 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 $time = " 5:21,11 "; # remove leading and trailing whitespace characters $time =~ s/^\s+|\s+$//g; if( $time =~ m/[^0-9:,]+/ ) { $seconds = -1; } elsif( $time =~ m/((?\d+):)? ((?\d+))? (,(?\d+))?/x ) { $seconds = ($+{'min'} * 60) + $+{'sec'} + ($+{'frac'}/(10**length($+{'frac'}))); } print("$seconds\n");