perl - 在 Perl 中打印哈希值

标签 perl loops hash foreach key-value

当我打印一个变量时,我得到一个 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/

相关文章:

查询中的 MySQL 循环变量

python - 如何在 python 中迭代数据帧然后返回行值?

arrays - 可以在 perl 中使用 map 内部的 next 吗?

arrays - 按值从高到低对哈希数组进行排序

powershell - 如何在 powershell 脚本中选择某些哈希表值但更改其他内联值

perl - 使用 perl 将\x3c/div\x3e 转换为 <div>

windows - 如果在多行替换中死亡,Perl 会报告错误的行号。这是预期的还是错误?

c# - 在 ASP.NET 页面中以设定的时间间隔检查数据库更改

arrays - Perl:从数组中打开文件并逐一读取

namespaces - Perl:匿名子程序中的原型(prototype)