Lun May 21, 2007 8:50 am
|
 |
pbellon
Perlero Nuevo

|
Registrado: 22 Oct 2004
Mensajes: 33
|
|
| Función uc y el uso de letras acentuadas y letra ñ |
|
|
Necesito convertir a mayúsculas nombres de ficheros y uso la función uc pero cuando el nombre de fichero lleva la letra ñ o una vocal acentuada ésta no la convierte.
Ejemplo 1: | Perl: | $s = "exp00ñ11";
$t = uc($s); |
esto imprime EXP00ñ11
Ejemplo 2: | Perl: | $s = "exp00á11";
$t = uc($s); |
esto imprime EXP00á11
¿A que se debe? y sobre todo, ¿cómo puedo solucionarlo?
 |
|
|
|
Lun May 21, 2007 9:42 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4226
Ubicación: Valladolid, España
|
|
|
|
|
Pues pasa porque Perl, por defecto, ignora las características locales de idioma de tu sistema. Para hacer que haga uso de ellas, debes usar el pragma use locale;.
Atención, que para que esto funcione se tienen que dar unas cuantas condiciones.
Más información en perllocale.
Si las cosas se tuercen, quizás sea más fácil hacer un tr/// del nombre del fichero. |
|

Mie May 23, 2007 8:48 am
|
 |
pbellon
Perlero Nuevo

|
Registrado: 22 Oct 2004
Mensajes: 33
|
|
|
|
|
Con tr/// lo he solucionado. Gracias
| Perl: | #################################################
# Convierta a mayúsculas
# Tiene en cuenta vocales acentuadas y la letra ñ
# Ej. $cad2 = uc2($cad);
#################################################
sub uc2 {
my($a) = @_;
$a =~ tr/áéíóúñ/ÁÉÍÓÚÑ/;
my $ret = uc($a);
return $ret;
}# fin sub uc2
#################################################
# Convierta a minúsculas
# Tiene en cuenta vocales acentuadas y la letra ñ
# Ej. $cad2 = lc2($cad);
#################################################
sub lc2 {
my($a) = @_;
$a =~ tr/ÁÉÍÓÚÑ/áéíóúñ/;
my $ret = lc($a);
return $ret;
}# fin sub lc2
|
|
|
Mie May 23, 2007 9:51 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4226
Ubicación: Valladolid, España
|
|
|
|
|
¿Y la u con diéresis: ü?
¿Y la c con cedilla: ç?
 |
|
Powered by phpBB © 2001, 2005 phpBB Group
|