Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Función uc y el uso de letras acentuadas y letra ñ

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Lun May 21, 2007 8:50 am
pbellon
Perlero Nuevo
Perlero Nuevo
Registrado: 22 Oct 2004
Mensajes: 33
Función uc y el uso de letras acentuadas y letra ñ Responder citando

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?
Cool
Mensaje Lun May 21, 2007 9:42 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4226
Ubicación: Valladolid, España
Responder citando

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.
Mensaje Mie May 23, 2007 8:48 am
pbellon
Perlero Nuevo
Perlero Nuevo
Registrado: 22 Oct 2004
Mensajes: 33
Responder citando

Con tr/// lo he solucionado. Gracias
Cool

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
Mensaje Mie May 23, 2007 9:51 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4226
Ubicación: Valladolid, España
Responder citando

¿Y la u con diéresis: ü?
¿Y la c con cedilla: ç?

Very Happy
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group