Per rendere maiuscola la prima lettera di ogni parola:
$riga =~ s/\b(\w)/\U$1/g;
Questo codice ha lo strano effetto di convertire "l'ombra rinfresca"
in "L'Ombra Rinfresca". A volte, magari, è proprio ciò
che desiderate. Altre volte potreste aver bisogno di una soluzione
più completa (suggerita da brian d foy):
$stringa =~ s/ (
(^\w) #all'inizio della riga
| # o
(\s\w) #preceduto da spazio bianco
)
/\U$1/xg;
$stringa =~ s/([\w']+)/\u\L$1/g;
Per rendere un'intera riga maiuscola:
$riga = uc($riga);
Per forzare ciascuna parola ad essere minuscola, con la prima lettera
maiuscola:
$riga =~ s/(\w+)/\u\L$1/g;
Potete (e probabilmente dovreste) abilitare la gestione del locale per i
caratteri che necessitano di essa, aggiungendo un use locale al vostro
programma. Consultate perllocale per una serie infinita di dettagli
sul locale.
L'operazione sopra descritta è a volte indicata come il porre
qualcosa in "title case" [impostare cioè maiscole e minuscole
come nei titoli, NdT], ma ciò non è del tutto corretto. Prendete
ad esempio in considerazione la corretta scelta delle maiuscole per il
film Dottor Stranamore, Ovvero Come Imparai a Non Preoccuparmi e ad
Amare la Bomba.
Il modulo di Damian Conway Text::Autoformat fornisce alcune astute
trasformazioni tra maiuscole e minuscole:
use Text::Autoformat;
my $x = "Dottor Stranamore, Ovvero Come Imparai a Non ".
"Preoccuparmi e ad Amare la Bomba";
print $x, "\n";
for my $stile (qw( sentence title highlight ))
{
print autoformat($x, { case => $stile }), "\n";
}
|