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
会被删除?这是预期的吗?
答案 0 :(得分:3)
“如果未设置Encode :: LEAVE_SRC位但设置了CHECK,则将覆盖要编码()或decode()的源字符串。如果您对此不感兴趣,则按位或它与位掩码。“
来自Encode文档。