Para convertir mayúsculas a minúsculas, es mejor usar la función lc() (
lowercase), o lcfirst() (
lowercase first char), ya que tiene en cuenta la localización en la que estamos trabajando. Si usas [A-Z], te estás olvidando del caso de la 'Ñ'
Using bash Syntax Highlighting
> perl -CAS -E 'use utf8; $x = "Ñandú"; $x =~ tr/A-Z/a-z/; say $x'
Ñandú
> perl -CAS -E 'use utf8; $x = "Ñandú"; $x = lc $x; say $x'
ñandú
Coloreado en 0.004 segundos, usando
GeSHi 1.0.8.4
Quedaría así:
Using perl Syntax Highlighting
#!/usr/bin/perl
use autodie;
open my $F, shift;
while (<$F>) {
s/\.\s\K(\w)/lc($1)/ge;
print;
}
close $F;
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
La expresión regular quiere decir: aplicar a $_, ya que es la variable por defecto, la operación de sustitución de un patrón por la ejecución (
/e) de un trozo de código Perl (
lc($1)), a lo largo de toda la variable (
/g).
El patrón es:
- buscamos un punto seguido por un espacio en blanco y seguido por un carácter alfanumérico (\w)
- si encontramos ese patrón, nos olvidamos del punto y del espacio (\K),
- y nos quedamos (capturamos) el carácter alfanumérico, con la ayuda de los paréntesis
Prueba:
Using bash Syntax Highlighting
> perl -CAS -E 'use utf8; $x = "La gaviota comió pan. El ñandú, no. Pero el gato, sí."; $x =~ s/\.\s\K(\w)/lc($1)/ge; say $x'
La gaviota comió pan. el ñandú, no. pero el gato, sí.
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4