Encode :: encode修改/删除原始字符串吗?

时间:2015-07-12 15:14:57

标签: perl encoding utf-8

Encode::encode的文档说:

  

编码

     

$ octets = encode(ENCODING,STRING [,CHECK])对标量值进行编码   从Perl的内部形式STRING到ENCODING并返回一个序列   八位字节。

这是一个测试脚本:

use feature qw(say);
use strict;
use warnings;
use utf8;
use open qw( :std :utf8 );

use Encode qw(encode);

my $str = 'æ';
say "str = '$str'";
my $str2 = encode('UTF-8', $str, Encode::FB_CROAK);
say "str = '$str'";

输出结果为:

str = 'æ'
str = ''

调用$str后,为什么encode会被删除?这是预期的吗?

1 个答案:

答案 0 :(得分:3)

“如果未设置Encode :: LEAVE_SRC位但设置了CHECK,则将覆盖要编码()或decode()的源字符串。如果您对此不感兴趣,则按位或它与位掩码。“

来自Encode文档。