in reply to JAPH the First
I had a bit of a fiddle, so here's what I came up with using the same data.
$==-1;$=++,$;[abs $_]=/.*\.(.*)/?$1:$=for @_;print map chr $_+65,@;
It gets one char wrong, but I figured it wasnt quite worth the effort to fix that up :)