elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Una expresion regular en PERL....¡¡No la entiendo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Una expresion regular en PERL....¡¡No la entiendo  (Leído 3,834 veces)
jcjuank

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Una expresion regular en PERL....¡¡No la entiendo
« en: 19 Julio 2005, 19:12 pm »

Buen dia. Estoy tratando de traducir un archivo en formato ebcdic a ascii hay un paquete en perl para hacerlo pero las tablas de traduccion q' usan no me sirven. Ya consegui la tabla pero tengo problemas para interpretar la siguiente expresion: eval '$byte=~tr/' . $default . '/\000-\377/'; en $default hay algo como esto $default='\000\001\002\003\234\011....se extiende hasta 255 posiciones. En $byte hay una cadena EBCDIC, empezando no se q' sea /\000-\377/ y no se como haga tr/// para hacer coincidir un caracter en $byte con / . $default . / y reemplasarlo por /\000-\377/.
Intente cambiar un valor de los q' estan en $default pero me cambia todas las cadenas q' convierta. No me deberia cambiar solo una??? Bueno ese es mi problema les agradezco cualquier ayuda.


En línea

Ivanchuk


Desconectado Desconectado

Mensajes: 469


LLVM


Ver Perfil WWW
Re: Una expresion regular en PERL....¡¡No la entiendo
« Respuesta #1 en: 20 Julio 2005, 21:04 pm »

Deberias ver la documentacion de perl, que por cierto esta muy bien documentado.
Código:
man perlintro
La descripción de los operadores esta en perlop.
El operador tr es para traducir. tr/ListaDeBusqueda/ListaDeReemplazo/
Le tenes que pasar una lista para que busque y luego otra lista con sus correspondientes reemplazos. Por ej:
Código:
my $algo="1234";
$algo=~tr/1234/Hola/;
print $algo;
De esta manera busca en $algo y reemplaza los 1 por H, 2 por o, 3 por l y 4 por a. El ejemplo imprimira "Hola". Sino le especificas una variable por medio del operador =~ trabaja sobre la variable por defecto $_.
La lista se la podes pasar como un rango tambien por medio del caracter "-"(sin las comillas), ej.:
Código:
my $algo="MAYUSCULA";
#ahora se pasa la cadena a minusculas
$algo=~tr/A-Z/a-z/;
print $algo;
En tu ejemplo, lo que hace es armar una tabla de conversión, de modo que los códigos en EBCDIC están en $default, y su correspondencia es con \000-\377(un rango de números en octal igual a 0-255).
De todas maneras te recomiendo que leas la documentacion, esta todo re bien explicado.
Bytes.


En línea

Sólo quien practica lo absurdo puede lograr lo imposible.

Join us @ http://foro.h-sec.org
jcjuank

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Una expresion regular en PERL....¡¡No la entiendo
« Respuesta #2 en: 21 Julio 2005, 15:22 pm »

Gracias, leere la documentacion q' me recomendaste, no sabia q' \000 era un numero en octal, ese era uno de mis errores.....
Seguire trabajando.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con Expresión Regular
Desarrollo Web
Shell Root 4 4,138 Último mensaje 10 Abril 2011, 22:26 pm
por Shell Root
Aplicar expresión regular en el resultado de un curl
PHP
Servia 3 3,501 Último mensaje 28 Agosto 2011, 14:11 pm
por WHK
Expresión regular email
PHP
Littl3 1 2,826 Último mensaje 20 Septiembre 2011, 23:06 pm
por ~ Yoya ~
Expresion regular en Perl « 1 2 »
Scripting
bdoX 17 9,784 Último mensaje 16 Enero 2012, 16:30 pm
por explorer
ayuda con una expresion regular :(
Programación General
Elemental Code 6 4,153 Último mensaje 23 Mayo 2012, 04:10 am
por Elemental Code
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines