如何将
perl
从半角转换为全角形式?用perl
的话说,就是从普通字符到宽字符。
例如,从
!abc ABC!
到 !abc ABC!
。
从算术上看,以下应该是正确的
binmode STDOUT, ":utf8";
$letter = 'A';
$lw = chr($letter + 0xfee0);
print "Hello $lw ($letter)!\n";
但是打印出来的结果不是我想要的,应该是
Hello A (A)!
如果您使用了
use warnings
,您将会收到一条警告,表明您的添加失败:
参数“A”在...处加法 (+) 不是数字
这意味着您的字母
'A'
在相加之前会被转换为数字,在本例中为 0
。您可以通过删除 $letter +
并运行 chr()
中的数字来验证这一点。
您可以通过修复逻辑来解决您的问题:
my $lw = chr(ord($letter) + 0xfee0);
ord()
),然后做加法。
请注意,为了避免像这样的简单错误,您应该始终使用这些编译指示:
use strict;
use warnings;