Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Avanzado » Pack no reconoce @ # % $ ni otros caracteres especiales Responder al tema
Nuevo tema


Página 1 de 1  [ 5 mensajes ] 
 
Nota Mié Sep 08, 2010 5:21 pm

Perlero Nuevo
Registrado: Mié Sep 08, 2010 5:14 pm
Mensajes: 3
Pack no reconoce @ # % $ ni otros caracteres especiales
Hola, tengo un problema con pack(). Estuve ejecutando este código:
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
s/%(..)/pack("C",hex($1))/ge;
pero no me reconoce los %... es decir, en vez de convertirlo a %25, los deja como está... ¿es un error mío o de la librería? ¿existe otra forma de solucionarlo...? Estoy usando Perl 5.8.5...

Saludos y desde ya muchas gracias.


Nota Mié Sep 08, 2010 5:36 pm
Avatar de Usuario
Administrador
Registrado: Dom Jul 24, 2005 6:12 pm
Ubicación: Valladolid, España
Mensajes: 9521
Re: Pack no reconoce @ # % $ ni otros caracteres especiales
Bienvenido a los foros de Perl en Español, hsendoa.

Estás pasando de %25 al carácter que representa.

Tienes algo parecido en el documento perlfaq9, en la pregunta How do I decode or create those %-encodings on the web? Lo tienes resuelto con la función chr(), también.

Así, hex(25), se transforma en el carácter número 37, que es, en el alfabeto Latin1, el carácter '%'.

_________________
JF^D Perl programming


Nota Mié Sep 08, 2010 6:02 pm

Perlero Nuevo
Registrado: Mié Sep 08, 2010 5:14 pm
Mensajes: 3
Re: Pack no reconoce @ # % $ ni otros caracteres especiales
Gracias explorer. Lo estaré probando.

A modo de comentario te explico: yo obtengo un string de ENV{CONTENT_REQUEST}. Le saco los espacios: $value =~ tr/+/%20/;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
Luego hago un split() partiendo en clave, valor y lo guardo en @algo.

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
for (@algo){
    # hacer algo aqui
}


pero el producto de eso me parsea bien los espacios y los signos como "'", "<" y ">" pero tiene un defecto (o sea, no parsea), los "%", "$", "#", "@", etc...

Me estaré fijando en tus sugerencias.

Me alegro mucho de estar formando parte de esta comunidad. Y estaremos aportando lo poco que sabemos para poder aprender...

Saludos.


Nota Mié Sep 08, 2010 6:16 pm
Avatar de Usuario
Administrador
Registrado: Dom Jul 24, 2005 6:12 pm
Ubicación: Valladolid, España
Mensajes: 9521
Re: Pack no reconoce @ # % $ ni otros caracteres especiales
Es muchísimo más cómodo usar el módulo CGI.

Echa un vistazo, como ejemplo, a mi CGI mínimo.

Te ahorrarás distinguir entre sí es una petición GET, o PUT, escapar caracteres, dividir los parámetros, etcétera.

_________________
JF^D Perl programming


Nota Jue Sep 09, 2010 9:09 am

Perlero Nuevo
Registrado: Mié Sep 08, 2010 5:14 pm
Mensajes: 3
Re: Pack no reconoce @ # % $ ni otros caracteres especiales
Definitivamente, es más cómodo... pero tengo una implementación ya hecha... modificarla sería hacer cambios muuuuy grandes...


Responder al tema  [ 5 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO