如果数组中存在键,我想从哈希中打印该键及其值.这是我写的代码.
for($i=0;$i<@array.length;$i++)
{
if (exists $hash{$array[$i]})
{
print OUTPUT $array[$i],"\n";
}
}
Run Code Online (Sandbox Code Playgroud)
从上面的代码,我可以打印键.但我不知道如何打印该密钥的值.
有人能帮我吗?
谢谢
@array.length 在语法上是合法的,但它绝对不是你想要的.
@array,在标量上下文中,为您提供数组中元素的数量.
该length函数没有参数,给出了长度$_.
该.操作员执行字符串连接.
因此,@array.length获取元素的数量@array和包含的字符串的长度$_,将它们视为字符串,并将它们连接在一起. $i < ...强加一个数字上下文,所以它很可能被视为一个数字 - 但肯定不是你想要的数字.(如果@array有15个元素,$_恰好是7个字符长,那么数字应该是157无意义的值.)
计算元素数量的正确方法@array只是@array在标量上下文中 - 或者,为了使其更明确,scalar @array.
要回答你的问题,如果$array[$i]是一个关键,相应的值是$hash{$array[$i]}.
但是C风格的for循环并不是遍历数组最干净的方法,特别是如果你在每次迭代时只需要值而不是索引.
foreach my $elem (@array) {
if (exists $hash{$elem}) {
print OUTPUT "$elem\n";
}
}
Run Code Online (Sandbox Code Playgroud)