Como perl
converter do formato de meia largura para largura total ? No perl
termo de, do caráter normal ao caráter amplo.
Por exemplo, de !abc ABC!
para !abc ABC!
. Aritmeticamente, o seguinte deve estar correto
binmode STDOUT, ":utf8";
$letter = 'A';
$lw = chr($letter + 0xfee0);
print "Hello $lw ($letter)!\n";
Mas a impressão não é o que eu esperava, o que deveria serHello A (A)!
Se você tivesse usado
use warnings
, receberia um aviso de que sua adição falhou:O que significa que sua letra
'A'
é transformada em um número antes da adição, o que será0
neste caso. Você pode verificar isso removendo$letter +
e apenas executando o número no arquivochr()
.Você pode resolver seu problema corrigindo a lógica:
Primeiro mudando a letra para numérico (
ord()
) e depois fazendo a adição.Observe que para evitar erros simples como esse, você deve sempre usar estes pragmas: