Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^2: Module for making english lists?

by AnomalousMonk (Archbishop)
on Aug 26, 2008 at 04:44 UTC ( [id://706821]=note: print w/replies, xml ) Need Help??


in reply to Re: Module for making english lists?
in thread Module for making english lists?

Or, shorter, sweeter and non-recursive (and kind of a restatement of Your Mother's contribution):

perl -wMstrict -le "sub standard_commas { return @_ == 0 ? '' : @_ == 1 ? qq{$_[0]} : join q{, }, @_[0 .. $#_ - 2], qq{$_[-2] and $_[-1]} } sub oxford_commas { return @_ < 3 ? standard_commas(@_) : join q{, }, @_[0 .. $#_ - 1], qq{and $_[-1]} } for (@ARGV) { my @words = split; print qq(\nfor words: @words); print 'standard commas: ', standard_commas(@words); print ' oxford commas: ', oxford_commas(@words); } " "" "a" "a b" "a b c" "a b c d" "a b c d e" for words: standard commas: oxford commas: for words: a standard commas: a oxford commas: a for words: a b standard commas: a and b oxford commas: a and b for words: a b c standard commas: a, b and c oxford commas: a, b, and c for words: a b c d standard commas: a, b, c and d oxford commas: a, b, c, and d for words: a b c d e standard commas: a, b, c, d and e oxford commas: a, b, c, d, and e

Replies are listed 'Best First'.
Re^3: Module for making english lists?
by AnomalousMonk (Archbishop) on Aug 26, 2008 at 23:11 UTC
    And, since I don't seem to be able to let this go, still shorter and sweeter:

    sub standard_commas { return join q{, }, @_ < 2 ? @_ : (@_[0 .. $#_ - 2], qq{$_[-2] and $_[-1]}) } sub oxford_commas { return join q{, }, @_ < 3 ? goto &standard_commas : (@_[0 .. $#_ - 1], qq{and $_[-1]}) }
    Tested. The output, which I won't inflict upon you again, is the same.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://706821]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (5)
As of 2024-03-29 13:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found