当我打印一个变量时,我得到一个 HASH(0xd1007d0)
值。我需要打印所有键和值的值。但是,我不能,因为控件没有进入循环。
foreach my $var(keys %{$HashVariable}){
print"In the loop \n";
print"$var and $HashVariable{$var}\n";
}
但是控件甚至没有进入循环。我是 perl 的新手。
最佳答案
我不能完全回答,因为这完全取决于 $HashVariable
中的内容。
判断里面有什么的最简单方法是:
use Data::Dumper;
print Dumper $HashVariable;
假设这是一个散列引用 - 如果print $HashVariable
给出HASH(0xdeadbeef)
作为输出,它就会是。
所以这应该有效:
#!/usr/bin/env perl
use strict;
use warnings;
my $HashVariable = { somekey => 'somevalue' };
foreach my $key ( keys %$HashVariable ) {
print $key, " => ", $HashVariable->{$key},"\n";
}
您犯的唯一错误是 $HashVariable{$key}
不起作用 - 您需要取消引用,因为它代表 %HashVariable
而不是 $HashVariable
,这是两个完全不同的东西。
否则 - 如果它没有进入循环 - 这可能意味着 keys %$HashVariable
没有返回任何东西。这就是 Dumper
测试有用的原因 - 是否有可能您没有正确填充它,或者您正在写入 %HashVariable
代替。
例如:
my %HashVariable;
$HashVariable{'test'} = "foo";
关于perl - 在 Perl 中打印哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43754058/