Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl:在两个哈希上循环_Perl - Fatal编程技术网

Perl:在两个哈希上循环

Perl:在两个哈希上循环,perl,Perl,我想以某种方式循环两个散列,这样如果散列A的键等于散列B的值,则执行以下操作: 例如 如果这些值相等,那么我想调用一个服务,它将为我获取一个本地化字符串 我能想到的唯一办法是: while (($key, $value) = each (%hash1, %hash2)) { if ($key eq $value) { $service->getLocalizedString($key); } } 因为它们是散列,所以不需要使用循环来按键执行查找 whi

我想以某种方式循环两个散列,这样如果散列A的键等于散列B的值,则执行以下操作:

例如

如果这些值相等,那么我想调用一个服务,它将为我获取一个本地化字符串

我能想到的唯一办法是:

while (($key, $value) = each (%hash1, %hash2)) {
    if ($key eq $value) {

        $service->getLocalizedString($key);

    }
}

因为它们是散列,所以不需要使用循环来按键执行查找

while (my ($key2,$value2) = each %$hash2) {
    if (exists $hash1->{$value2}) {
        print "($key2,$value2) from \$hash2 ";
        print "matches ($value2,$hash1->{$value2}) from \$hash1\n";
    }
}

因为它们是散列,所以不需要使用循环来按键执行查找

while (my ($key2,$value2) = each %$hash2) {
    if (exists $hash1->{$value2}) {
        print "($key2,$value2) from \$hash2 ";
        print "matches ($value2,$hash1->{$value2}) from \$hash1\n";
    }
}

据我所知,您想检查%hash1是否包含替换字符串的元素,以查找%hash2中的值中列出的标识符

while (my ($key,$value) = each(%$hash2)) {
    # check if we have an entry in $hash1
    if (exists $hash1->{$value}) {     
         # call service with the STRING_ID as argument
         $service->getLocalizedString($value);
    } else {
         # nothing found
    }
}

据我所知,您想检查%hash1是否包含替换字符串的元素,以查找%hash2中的值中列出的标识符

while (my ($key,$value) = each(%$hash2)) {
    # check if we have an entry in $hash1
    if (exists $hash1->{$value}) {     
         # call service with the STRING_ID as argument
         $service->getLocalizedString($value);
    } else {
         # nothing found
    }
}


不,我没听懂。第一位实际上不是有效的perl。您的示例数据太小,无法真正理解您的实际意思。单个元素散列。你能更清楚地说明你想做什么吗?我会使用更多的样本数据,但重点是我想同时循环hash1和hash2,以便将一个的键与另一个的值匹配。添加了更多样本数据。我想将哈希1的主要数字键与随机生成的HASH2值相匹配。如果需要重复操作,请考虑反转HASH2,使其值成为新散列中的键。那么剩下的就简单了。不,我不明白。第一位实际上不是有效的perl。您的示例数据太小,无法真正理解您的实际意思。单个元素散列。你能更清楚地说明你想做什么吗?我会使用更多的样本数据,但重点是我想同时循环hash1和hash2,以便将一个的键与另一个的值匹配。添加了更多样本数据。我想将哈希1的主要数字键与随机生成的HASH2值相匹配。如果需要重复操作,请考虑反转HASH2,使其值成为新散列中的键。那么剩下的就简单了。感谢你的回应@斯奈克斯潘:你知道理解你的意图有多难吗?经验不足的人很乐意尝试这些问题的答案,因为他们不会有什么损失,我很惊讶暴民觉得他可以在没有任何进一步信息的情况下提供解决方案。值得一提的是,我的第一个猜测和STF的一样。请你通过编辑你的问题来解释你所说的“STRING_ID1”=>{default'Some STRING'}之类的东西是什么意思,它不可编译?我是Perlnoob的耳语者。我现在编辑了这个问题,这样它至少可以编译。感谢你的回答@斯奈克斯潘:你知道理解你的意图有多难吗?经验不足的人很乐意尝试这些问题的答案,因为他们不会有什么损失,我很惊讶暴民觉得他可以在没有任何进一步信息的情况下提供解决方案。值得一提的是,我的第一个猜测和STF的一样。请您通过编辑您的问题来解释您所说的“STRING_ID1”=>{default'Some STRING'}之类的东西是什么意思,它不可编译?我是Perlnoob窃窃私语者。我现在编辑了这个问题,这样它至少可以编译。@snakespan:如果这是您的意思,然后你应该记下tripleee在你的问题下面的评论。@snakespan:如果你是这个意思,那么你应该记下tripleee在你的问题下面的评论。