我需要将%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;
答案 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}
指定两个且仅指定其中两个字符。