Thread View: chile.comp.programacion
3 messages
3 total messages
Started by Chano
Tue, 26 Sep 2006 19:38
Reemplazar caracteres por hexadecimal en Perl
Author: Chano
Date: Tue, 26 Sep 2006 19:38
Date: Tue, 26 Sep 2006 19:38
20 lines
1531 bytes
1531 bytes
Necesito reemplazar en un string cada uno de los caracteres por un código hexadecimal. Pensaba poner el listado de equivalencias en un hash y luego usar una expresion regular de reemplazo para hacerlo... pero me quedé en el hash y se me fue en collera la exp regular. %hash=( 'a' => '+61', 'b' => '+62', ... 'z' => '+7A' ); s/$string/??????/ Alguna idea? -- Chano jgarrido[@]dcc.uchile.cl
Re: Reemplazar caracteres por hexadecimal en Perl
Author: Chano
Date: Tue, 26 Sep 2006 21:54
Date: Tue, 26 Sep 2006 21:54
30 lines
1936 bytes
1936 bytes
Chano <chano@lj.nospam.cl> escribio:
> Necesito reemplazar en un string cada uno de los caracteres por un código hexadecimal.
> Pensaba poner el listado de equivalencias en un hash y luego usar una expresion regular de
> reemplazo para hacerlo... pero me quedé en el hash y se me fue en collera la exp regular.
> %hash=( 'a' => '+61',
> 'b' => '+62',
> ...
> 'z' => '+7A'
> );
> s/$string/??????/
> Alguna idea?
Bueno, lo resolvi de la siguiente manera
$string =~ s/([\$,\@,\#,\!,\",\%,\',\(,\),\*,\+,\,,\-,\.,\/,\:,\;,\<,\=,\>,\?])/$hash{$1}/g ;
Con eso, para cada caracter que este en la lista y que encuentre en $string, buscara su equivalente en
$hash y lo reemplazara.
--
Chano
jgarrido[@]dcc.uchile.cl
Re: Reemplazar caracteres por hexadecimal en Perl
Author: Cristian Gutierrez
Date: Wed, 27 Sep 2006 03:20
Date: Wed, 27 Sep 2006 03:20
29 lines
2037 bytes
2037 bytes
Hoy en la tarde, chano@lj.NOSPAM.cl dijo:
> Chano <chano@lj.nospam.cl> escribio:
>> Necesito reemplazar en un string cada uno de los caracteres por un
>> c�digo hexadecimal. Pensaba poner el listado de equivalencias en un
>> hash y luego usar una expresion regular de reemplazo para
>> hacerlo... pero me qued� en el hash y se me fue en collera la exp
>> regular.
[...]
> $string =~ s/([\$,\@,\#,\!,\",\%,\',\(,\),\*,\+,\,,\-,\.,\/,\:,\;,\<,\=,\>,\?])/$hash{$1}/g ;
>
> Con eso, para cada caracter que este en la lista y que encuentre en
> $string, buscara su equivalente en $hash y lo reemplazara.
Aplicando lo que sale en `perldoc -q base':
$string =~ s/(.)/sprintf("%X",ord($1))/eg;
O bien (mas eficiente pero quizas menos digerible):
$string = unpack("H*", pack("A*", $string));
Saludines,
--
Guti
When in doubt, parenthesize. At the very least it will let some poor
schmuck bounce on the % key in vi. -- Larry Wall in the perl man page
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads