http://www.perlmonks.org?node_id=86101


in reply to Re: Re (tilly) 2: Golf challange: match U.S. State names
in thread Golf challange: match U.S. State names

Your subroutine will accept "AK\n" as a state. Fixing that takes it to 125. But I can beat that with the following 122 character solution (which is what I was trying to figure out when I posted my first):
sub state{ $_[0]=~/^\w\w\z/&&grep/$_[0]/,'WVTNHINMSCORIDCAKSDE WIALAR MNCTX NVAZ' +,'FLGAILKTKYMAMDMEMIMOMTNDNENJNYOHOKPAUTWAWY'=~/../g }
OTOH I can improve your idea down to 119:
sub state { pop=~/^([CGILPVW]A|[CKUV]T|[HRW]I|A[KLRZ]|CO|DC|DE|FL|I[DLN]|KS|KY|M[A +DEINOST]|N[CDEHJMVY]|O[HKR]|SC|SD|TN|TX|WV|WY)\z/ }