我需要将 %xx hexadecimal 字符更改为字符。我正在尝试使用此代码,但它不起作用:
#!/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;
改变
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
更好的正则表达式模式:
$cadena =~ s/([[:xdigit:]]{2})/chr(hex($1))/eg;
使用 POSIX 字符集
[:xdigit:]
来匹配单个十六进制字符,并使用 {2}
来指定两个且仅其中两个。