使用split将字符串转换为perl中的hash

pav*_*van 2 perl

$hashdef = "Mouse=>Jerry, Cat=>Tom, Dog=>Spike";

%hash = split /,|=>/,$hashdef;

print "$_=>$hash{$_}" foreach(keys %hash);


Mouse=>JerryDog=>SpikeCat=>Tom
Run Code Online (Sandbox Code Playgroud)

我是新来的perl可以任何人解释我能够知道的分裂函数里面的正则表达式 被用作两者的选择,但我仍然感到困惑

%hash = split /|=>/,$hashdef;
Run Code Online (Sandbox Code Playgroud)

我得到了输出

S=>pe=>J=>eT=>or=>rm=>,y=>,u=>sM=>og=>D=>oC=>ai=>kt


%hash = split /,/,$hashdef;
Mouse=>Jerry=>Cat=>TomDog=>Spike=>
Run Code Online (Sandbox Code Playgroud)

请解释上述情况

Cai*_*von 6

split第一个参数定义了你想要的元素之间的区别.

/,|=>/匹配逗号(,)或等号,后跟大于号(=>).他们只是文字,他们没什么特别的.

/|=>/匹配零长度字符串或等号后跟一个大于号,并且在零长度字符串上拆分只是将一个字符串拆分成单个字符; 因此,在您的哈希中,M将映射到o,u将映射到s等等.它们在输出中出现混乱,因为哈希没有明确的排序.

/,/只是分裂逗号.你创建映射的哈希Mouse=>JerryCat=>TomDog=>Spike不了了之.