为什么这个示例代码没有正常工作?
#/usr/bin/perl
$a = "aaa%29";
$a =~ s/%/\\x/g;
print "a $a \n";
$b = "aaa\x29";
print "b $b \n";
$c = sprintf($a);
print "c $c \n";
Run Code Online (Sandbox Code Playgroud)
我希望得到相同输出线的三倍.
对于第一个正则表达式,您可以使用:
$a = "aaa%29";
$a =~ s/%([0-9A-F]{2})/chr(hex($1))/gie;
print "a $a \n";
Run Code Online (Sandbox Code Playgroud)
我不知道你想要做什么sprintf.(在您的代码中打开警告use warnings;或使用或-w作为选项传递perl.sprintf调用无效.)
如果您正在尝试解码URL,我猜,您应该使用模块中的uri_unescape函数URI::Escape.
或者使用类似的东西s{%([0-9A-F]{2})}{chr(hex($1))}egi.