use POSIX qw(strftime); use Time::Local; my($from, $to, $incr) = ('13:00', '23:00', '0:05'); foreach($from, $to, $incr) { if(/^(\d+):(\d\d)(?::(\d\d))?$/) { $_ = ($1 * 60 + $2) * 60 + ($3 || 0); } } @range = map { strftime "%H:%M:%S", gmtime $_ } map $_*$incr, $from/$incr .. $to/$incr; $_ = join " ", @range; s/(.{1,70})(\s|$)/$1\n/g; print ;