# 全角字符第一字节 = 163(0xA3), 第二字节为对应半角字符 + 128
# 全角中文第一字节 > 163
my $str = ‘019AaBbYyZz\",.?<>{}[]*&^%#@!~()+-|:;';
print "$str\n";
$str =~ s/\x{A3}(.)/chr(ord($1) - 128)/eg;
print "$str\n";
### 运行结果 ###
019AaBbYyZz\",.?<>{}[]*&^%#@!~()+-|:;
019AaBbYyZz\",.?<>{}[]*&^%#@!~()+-|:;
#反之则半角转全角
$str =~ s/([0-9a-zA-Z])/chr(163).chr(ord($1)+128)/eg;
print "$str\n";
### 运行结果 ###
019AaBbYyZz\",.?<>{}[]*&^%#@!~()+-|:;
请发表评论