in reply to Re: Capitalize First Letter of Each Word
in thread Capitalize First Letter of Each Word

A single map will suffice:

% perl -le 'print "@{ [ map ucfirst lc, qw( ODE TO PERL ) ] }"' Ode To Perl

the lowliest monk

Replies are listed 'Best First'.
Re^3: Capitalize First Letter of Each Word
by inman (Curate) on Jun 30, 2005 at 14:30 UTC
    Using map implies a join of some sort. This will normalise any spaces that may have been in your original data unless the regex used to split the data is zero width.
    my $new = join '', map {ucfirst lc} split /(?=\s)/;
Re^3: Capitalize First Letter of Each Word
by thnidu (Acolyte) on Nov 19, 2014 at 01:26 UTC
    No maps are needed at all. Inputting one line at a time:
    $ perl -pe 's/([A-Z]+)/ucfirst(lc $1)/egi' "THIS IS TESTING" "This Is Testing" "JOE MARCONES" "Joe Marcones" "RESIDENTIAL MAINTENANCE COMPANY" "Residential Maintenance Company" THIS iS a Text IN TITLE CASE This Is A Text In Title Case This isn't right This Isn'T Right And I'm wrong too And I'M Wrong Too e-mail is nice when capped correctly E-Mail Is Nice When Capped Correctly &c &C "Bit o' Mint" "Mano y Mano" "Chris diBona" "Scrooge McDuck" "Bit O' Mint" "Mano Y Mano" "Chris Dibona" "Scrooge Mcduck" "Cruella de Ville" "Jake O'Shaunessy" "Tales from the Crypt" "Cruella De Ville" "Jake O'Shaunessy" "Tales From The Crypt" "Sanford and Son Salvage Company" "Sanford And Son Salvage Company"
    Of course this won't and can't handle all cases. But I usually use this for small amounts of text, either to TURN OFF THE SHOUTING or to convert an all-caps title to title case, and I'm willing to correct the few errors that it leaves or produces.
Re^3: Capitalize First Letter of Each Word
by displeaser (Hermit) on Jun 30, 2005 at 14:23 UTC
    Hi
    I kindof did in my commented out line, but my aim was to make it easier for the OP to read & hopefully understand what i was doing.

    Your code is neat though. I'll ++ it tomorrow when I have some more votes ;-)

    Displeaser