Perl:获取两个哈希数组之间的差异?

3

我有两个包含哈希的数组引用:

$A = [
  {
    "t" => "1419054300000",
    "v" => "28.1"
  },
  {
    "t" => "1419053400000",
    "v" => "28.2"
  },
  {
    "t" => "1419052500000",
    "v" => "28.4"
  }
];

$B = [
  {
    "t" => "1419053400000",
    "v" => "28.2"
  },
  {
    "t" => "1419052500000",
    "v" => "28.4"
  }
];

我希望能够从$A中获取仅哈希值,其中其t的值不存在于$B中的哈希表之一(对于每个数组引用,t值是唯一的,v则不是)。

我猜测有一些明显的方法可以实现这个目标,但是我已经不断地尝试了一整天,但没有成功。

2个回答

1
你可以使用 perl5i diff 方法
use perl5i::2;

...initialize $A and $B...

say $A->diff($B)->mo->as_perl;
__END__
[
  {
    't' => '1419054300000',
    'v' => '28.1'
  }
]

我之前完全不知道perl5i!非常感谢,它完美地运行了。 :) - VirtualWolf

1

像往常一样,您可以构建哈希查找表,其中键是要过滤的元素,

my %seen;
@seen{ map $_->{t}, @$B } = ();

my $C = [
  grep { !exists $seen{$_->{t}} } @$A
];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接