В get_time у вас есть строка
my ($sec, $min, $hour) = (POSIX::strptime($str, '%I:%M:%S')) [3,4,5];`
Согласно документам , strptime возвращает
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday) = POSIX::strptime("string", "Format");
Так что, похоже, вам нужно
my ($sec, $min, $hour) = (POSIX::strptime($str, '%I:%M:%S')) [0,1,2];
.
Удачи!