perlcharhex

How to convert a hexadecimal number to a character string in Perl


I need change the %xx hexadecimal characters to characters. I am trying with this code, but it does not work:

#!/usr/bin/perl -w

my $cadena = "%40%61%62";
print $cadena . "\n";
$cadena =~ s/%//g;
print "cad: " . $cadena . "\n";
my $string =~ s/([a-fA-F0-9][a-fA-F0-9])/chr(hex($1))/eg;
print "traducida: " . $string;

Solution

  • Change

    my $string =~ s/([a-fA-F0-9][a-fA-F0-9])/chr(hex($1))/eg;
    

    to

    $cadena =~ s/([a-fA-F0-9][a-fA-F0-9])/chr(hex($1))/eg;
    

    so that search and replace is done on $cadena.

    Output: @ab

    40 => @
    61 => a
    62 => b