$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)
请解释上述情况
split第一个参数定义了你想要的元素之间的区别.
/,|=>/匹配逗号(,)或等号,后跟大于号(=>).他们只是文字,他们没什么特别的.
/|=>/匹配零长度字符串或等号后跟一个大于号,并且在零长度字符串上拆分只是将一个字符串拆分成单个字符; 因此,在您的哈希中,M将映射到o,u将映射到s等等.它们在输出中出现混乱,因为哈希没有明确的排序.
/,/只是分裂逗号.你创建映射的哈希Mouse=>Jerry来Cat=>Tom和Dog=>Spike不了了之.