• Publicidad

Pack no reconoce @ # % $ ni otros caracteres especiales

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Pack no reconoce @ # % $ ni otros caracteres especiales

Notapor hsendoa » 2010-09-08 17:21 @764

Hola, tengo un problema con pack(). Estuve ejecutando este código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
s/%(..)/pack("C",hex($1))/ge;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
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.
hsendoa
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2010-09-08 17:14 @760

Publicidad

Re: Pack no reconoce @ # % $ ni otros caracteres especiales

Notapor explorer » 2010-09-08 17:36 @775

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 & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Pack no reconoce @ # % $ ni otros caracteres especiales

Notapor hsendoa » 2010-09-08 18:02 @793

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.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
for (@algo){
    # hacer algo aqui
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


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.
hsendoa
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2010-09-08 17:14 @760

Re: Pack no reconoce @ # % $ ni otros caracteres especiales

Notapor explorer » 2010-09-08 18:16 @802

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 & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Pack no reconoce @ # % $ ni otros caracteres especiales

Notapor hsendoa » 2010-09-09 09:09 @423

Definitivamente, es más cómodo... pero tengo una implementación ya hecha... modificarla sería hacer cambios muuuuy grandes...
hsendoa
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2010-09-08 17:14 @760


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados