in reply to Re^3: Golf - Ordinal Suffixes
in thread Golf - Ordinal Suffixes

We're assuming good input anyway, so we can shave another off...

sub num2ord { local $_ = shift; # 1 2 3 4 # 123456789012346789012345678901234567890 $_.(qw(0 st nd rd)[/1?.$/g]||th) }
Which drops us to 33.

-sauoq
"My two cents aren't worth a dime.";

Replies are listed 'Best First'.
Re^5: Golf - Ordinal Suffixes
by hv (Prior) on Oct 27, 2005 at 09:18 UTC

    One bareword hardly seems enough:

    sub num2ord { local $_ = shift; # 1 2 3 4 # 123456789012346789012345678901234567890 $_.((0,st,nd,rd)[/1?.$/g]||th) }

    Update: oops, typo: too many parens at start.

    Hugo

      sub num2ord { local $_ = shift; # 1 2 3 4 # 1234567890123**789012345678901234567890 $_.((0,st,nd,rd)[/1?.$/g]||th) }
      Those ** should be 456, not 46 - that appears to have been copied by everyone ;)

      Also, one extra character can be removed:
      sub num2ord { local $_ = shift; # 1 2 3 # 123456789012345678901234567890 $_.=(0,st,nd,rd)[/1?.$/g]||th }