in reply to increment hh:mm:ss

Why not generalise this a bit, to a subroutine that can adjust a given time by a given number of seconds? And rather than using an if to determine whether you need to pad the hours with a leading 0, use sprintf to format the integer to a 2-digit string like so:

#!/usr/bin/perl $now = '00:00:00'; for (0..60*60*24+5) { print adjust_time($now, $_), "\n"; } exit; sub adjust_time { my $start_time = shift; my $increment = shift; my ($hour, $min, $sec) = split /:/, $start_time; my $seconds = 3600 * $hour + 60 * $min + $sec; $seconds += $increment; $hour = sprintf "%02d", ($seconds/3600) % 12; # add + 1 here for 1 +2 hour format; $min = sprintf "%02d", ($seconds/60) % 60; $sec = sprintf "%02d", $seconds % 60; return "$hour:$min:$sec"; }