perl - 检查散列键是否存在创建键

标签 perl hash

鉴于以下代码

#!/usr/bin/perl

use Data::Dumper;

my %hash;
my @colos = qw(ac4 ch1 ir2 ird kr3);

foreach my $colo (@colos) {
    if(exists $hash{output}{$colo}) {
        print "$colo is in the hash\n";
    }
}

print Dumper(\%hash);

我有一个创建的空哈希。我有一个包含一些缩写的数组。如果我循环遍历数组以查看这些人是否在散列中,则不会向 STDOUT 显示任何预期的内容,但由于某种原因创建了 $hash{output}。这根本不符合逻辑。我所做的只是 if 存在。我哪里做错了?

最佳答案

exists在给定的散列中查找散列元素。您的代码正在自动生成哈希
%{ $hash{output} }并检查是否带有键 $colo 的哈希元素存在于该哈希中。

请尝试以下操作:

if(exists $hash{output}{$colo}) {

变成
if(exists $hash{output} and exists $hash{output}{$colo}) {

当然,您可以编写一个从代码中隐藏这种复杂性的子程序。

关于perl - 检查散列键是否存在创建键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9789333/

相关文章:

perl - DBIx::可以在重新连接时恢复 session 变量的东西?

arrays - Perl - 检查每个不同数组中的任何元素是否与变量匹配

php - 该程序无法启动,因为在我的计算机上启动 Apache 服务器时缺少 api-ms-win-crt-runtime-l1-1-0.dll

java - 感知哈希 (pHash) 图像颜色与灰度与阈值哪个是最佳输入源

php - 比较目录状态或散列以获得乐趣和利润的最快方法

php - 多维数组到哈希

perl - 不推荐使用散列作为引用

linux - 无法在 SUSE 11 上安装任何包

perl - 如何手动创建 TAP 输出

ruby - Sum 2 具有相同键的散列属性