Beginner wrote:
> Hi All,
Hello,
> I have a list of names all in uppercase that I would like to
> capitaIise. I can't help but think that map could make short work of
> this loop but I am not sure how. Is it possible to use map here
> instead of a for loop? I can see there are going to be issues with
> double-barrelled names but I'll cross that bridge later.
>
>
> Thanx,
> Dp,.
>
> while (<DATA>) {
>
> my @words = split(/\s+/,$_);
> my $str;
> foreach my $w (@words) {
> my $s = lc($w);
> $s = ucfirst($s);
> $str .= $s.' ';
> }
> print "STR=$str\n";
> }
>
> __DATA__
> SOME NAME
> SOMEONE WITH FOUR NAMES
> ONE WITH THREE
> A-HYPENED NAME
Try it like this:
while ( <DATA> ) {
s/([[:alpha:]]+)/\L\u$1/g;
print "STR=$_";
}
__DATA__
SOME NAME
SOMEONE WITH FOUR NAMES
ONE WITH THREE
A-HYPENED NAME
John
--
Perl isn't a toolbox, but a small machine shop where you can special-order
certain sorts of tools at low cost and in short order. -- Larry Wall
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/