Beginner wrote:
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
Hi Dermot.
I don't like this sort of thing - it's grossly unreadable.
But you asked for it :)
while (<DATA>) {
chomp;
my $str = join '', map ucfirst lc, split /([^a-z]+)/i;
print "STR=$str\n";
}
Rob
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/