Thank you
dws! I have made haste (@1M2C8) && lerned the error of my ways (I hope) by plumbing the Camel(2ndEd). I tried to correct my folly below... please be kind && direct me further if my understanding remains deficient. You have my gratitude!
#... comments && setup varz
if (defined($tout)) {
for(my $i=0; $i<@valz; $i++) { $mapz{$valz[$i]} = $i; }
@time = split //, $tout; splice(@time,5,($#time-5)); # chop extra!
for(my $i=0; $i<5; $i++) { $time[$i]=0 unless defined($time[$i]);
while ($mapz{$time[0]} > 12) {
$time[0] = $valz[$mapz{$time[0]}-12]; $year++;
}
unshift(@time, $year+2000);
printf "%s %d, %d %02d:%02d:%02d", $mnth[$mapz{$time[1]}-1],
$mapz{$time[2]}, $time[0], $mapz{$time[3]},
$mapz{$time[4]}, $mapz{$time[5]};
} else {
$time[5] -= 101; $time[4] = $valz[(++$time[4]+(12*$time[5]))];
$time[3] = $valz[$time[3]]; $time[2] = $valz[$time[2]];
$time[1] = $valz[$time[1]]; $time[0] = $valz[$time[0]];
printf "%s%s%s%s%s", $time[4],$time[3],$time[2],$time[1],$time[0];
} # print "\n"; # hmmm...
-
PipTiggerp.s. I would've updated my initial post but hopefully another Monk can lern (like me) from the diff.
p.p.s. %02d pads a decimal integer with "0" (zero) until it's 2 characters long.