sub to12h { local $_=shift; return (12, "PM") if $_==0; return ($_, "AM") if $_<=12; return ($_-12, "PM") } for (0..23) { print join " ", to12h($_), "\n"; }