我有一个函数:
sub ascii_to_hex ($)
{
## Convert each ASCII character to a two-digit hex number.
(my $str = shift) =~ s/(.|\n)/sprintf("%02lx", ord .$1)/eg;
return $str;
}我需要在每个数字前添加一个'%‘。收到%68%75%44
发布于 2012-08-21 20:53:05
在sprintf格式的字符串中使用%%来打印百分号。
发布于 2012-08-21 23:31:54
CPAN解决方案:
use URI::Escape;
sub ascii_to_hex { return uri_escape(shift, "\x00-\xFF"); }或
use URI::Escape qw(%escapes);
sub ascii_to_hex {
(my $str = shift) =~ s/[\s\S]/$escapes{$1}/g;
return $str;
}转义是URI包的一部分,虽然不是核心,但它是许多其他模块所必需的,并且倾向于安装在大多数系统上。
发布于 2012-08-21 20:50:16
sub ascii_to_hex ($)
{
return join("", map { '%'.sprintf("%02x", ord($_)) } split(//, shift));
}https://stackoverflow.com/questions/12055107
复制相似问题