【发布时间】:2016-09-22 12:22:36
【问题描述】:
我有两个数组,一个哈希保存这些数组
Array 1:
my $group = "west"
@{ $my_big_hash{$group} } = (1534,2341,2322,3345,689,3333,4444,5533,3334,5666,6676,3435);
Array 2 :
my $element = "Location" ;
my $group = "west" ;
@{ $my_tiny_hash{$element}{$group} } = (153,333,667,343);
现在我想比较一下
@{ $my_tiny_hash{$element}{$group} }
与
@{ $my_big_hash{$group} }
并检查小散列数组的所有元素是否都是大散列数组的一部分。 正如我们所见,小散列只有 3 位元素,如果我们只比较前 3 位,所有这些元素都与大散列匹配
如果前 3 个数字/字母匹配并且在大数组中都可用,那么它的匹配或我们必须打印不匹配的元素
它是一个数组到数组的比较。 我们如何实现它。
PS:没有Array Utils,如何实现
使用 Array Utils 的解决方案非常简单
my @minus = array_minus( @{ $my_tiny_hash{$element}{$group} } , @{ $my_big_hash{$group} } );
但它会比较所有数字,我只想匹配前 3 位数字
希望这很清楚
谢谢
【问题讨论】:
-
根据您编辑的问题。澄清
match the first 3 digits。 -
@ChankeyPathak "153 of tiny hash" 是 "1534 of big hash" 的一部分。另外,它是原始问题的一部分,我刚刚使用 Array Utils 发布了代码
-
好的,已编辑相同的答案。我使用了一个包含大哈希前 3 位数字的临时数组,然后用它与 tiny 进行比较。
-
@ChankeyPathak:我们能否使用 Array Utils 将相同的逻辑扩展到单线解决方案。正如我所说,这一个班轮正在计算所有数字,我只对 3 个感兴趣
-
是的,请参阅我编辑的答案。使用相同的方法。