【发布时间】:2012-01-15 03:38:57
【问题描述】:
为什么我会在这里使用 Devel::Peek::Dump 两个不同的结果?
#!/usr/bin/env perl
use warnings;
use 5.014;
use utf8;
binmode STDOUT, ':encoding(utf-8)';
use Devel::Peek;
my %hash1 = ( 'müller' => 1 );
say Dump $_ for keys %hash1;
my %hash2;
$hash2{'müller'} = 1;
say Dump $_ for keys %hash2;
输出:
SV = PV(0x753270) at 0x76d230
REFCNT = 2
FLAGS = (POK,pPOK,UTF8)
PV = 0x759750 "m\303\274ller"\0 [UTF8 "m\x{fc}ller"]
CUR = 7
LEN = 8
SV = PV(0x753270) at 0x7d75a8
REFCNT = 2
FLAGS = (POK,FAKE,READONLY,pPOK)
PV = 0x799110 "m\374ller"
CUR = 6
LEN = 0
【问题讨论】:
-
你确定你的源对两个键都有完全相同的字节吗?
-
对我来说同样的事情:我的输出和你完全一样。从浏览器复制代码或自己输入变音符号会得到相同的结果。尽管如此,两个哈希之间的比较仍然有效:
say 'Found!' if exists $hash2{ (keys %hash1)[0] }; # outputs 'Found!' -
ü都是用键盘上的ü键编写的。 -
顺便说一句,
say Dump ...;应该是Dump ...;。 -
在此处打开 stackoverflow.com/questions/8443863/… 相关问题。