11?$h-12:$h)]='h';$s[$m=dechex($m>59?0:$m/5)]=$h==$m?'x':'m';vprintf("%9s %5s%8s %s%14s %s%16s %s%14s %5s%8s %9s",$s) ?> #### <>=~/:/;@y=(o)x12;$y[$`%12]=h;$y[$'/5]=~y/oh/mx/; printf'%9s %5s%8s %s%14s %s%16s %s%14s %5s%8s %9s',map{$y[$_],$y[11-$_]}0..5 #### # test.pl use strict; use warnings; my $testprog = shift or die "usage: $0 program-file\n"; my $datafile = 'tt.txt'; my $cmd = "perl $testprog <$datafile"; sub build_file { my $contents = shift; open(my $fh, '>', $datafile) or die "open '$datafile': $!"; print $fh "$contents\n"; close($fh); } print "Testing $testprog, size=", -s $testprog, " bytes.\n"; my @testdata = ( [ '00:00', <<'EXPECTED' ], x o o o o o o o o o o o EXPECTED [ '23:59', <<'EXPECTED' ], o x o o o o o o o o o o EXPECTED [ '21:35', <<'EXPECTED' ], o o o o o h o o o m o o EXPECTED [ '04:59', <<'EXPECTED' ], o m o o o o o o h o o o EXPECTED [ '12:00', <<'EXPECTED' ], x o o o o o o o o o o o EXPECTED [ '03:03', <<'EXPECTED' ], m o o o o o h o o o o o EXPECTED [ '21:08', <<'EXPECTED' ], o o m o o h o o o o o o EXPECTED [ '23:05', <<'EXPECTED' ], o h m o o o o o o o o o EXPECTED [ '16:24', <<'EXPECTED' ], o o o o o o o o x o o o EXPECTED [ '13:06', <<'EXPECTED' ], o o x o o o o o o o o o EXPECTED [ '18:00', <<'EXPECTED' ], m o o o o o o o o o o h EXPECTED [ '22:26', <<'EXPECTED' ], o o o h o o o o o o m o EXPECTED [ '20:10', <<'EXPECTED' ], o o o o m o o h o o o o EXPECTED ); for my $r (@testdata) { print $r->[0], "\n"; build_file($r->[0]); my $got = `$cmd`; chomp($got);chomp($got);chomp($got);$got.="\n"; $got eq $r->[1] or die "expected:\n$r->[1]got:\n$got"; } print "successful\n"; #### perl test.pl mysolution.pl