如何在perl中将hex转换为char字符串

时间:2016-11-22 09:38:59

标签: perl char hex

我需要将%xx HEX字符更改为chars。我正在尝试使用此代码,但它不起作用:

#!/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;

2 个答案:

答案 0 :(得分:3)

更改

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

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

以便在$cadena上完成搜索和替换。

输出:@ab

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

答案 1 :(得分:0)

更好的正则表达式模式:

$cadena =~ s/([[:xdigit:]]{2})/chr(hex($1))/eg;

使用POSIX字符集[:xdigit:]匹配单个十六进制字符,并使用{2}指定两个且仅指定其中两个字符。