What the heck. Another approach:
>perl -wMstrict -le
"my @dates = (
'December 1st 2012', 'December 2nd 2012',
'December 23rd 2012', 'December 24th 2012',
'December 765th 2012', 'an 8th note',
);
;;
for my $date (@dates) {
printf qq{'$date' -> };
$date =~ s{ \d \K (?: st | nd | rd | th) \b }{}xms;
print qq{'$date'}
}
"
'December 1st 2012' -> 'December 1 2012'
'December 2nd 2012' -> 'December 2 2012'
'December 23rd 2012' -> 'December 23 2012'
'December 24th 2012' -> 'December 24 2012'
'December 765th 2012' -> 'December 765 2012'
'an 8th note' -> 'an 8 note'