Perlで2つの配列で重複する値 or しない値を抜き出す
開発環境はWindows 7 Professional(32bit)+Perl 5.24.0。
use strict; use warnings; my @arr1 = qw(30 20 60 100 90 10 40 80); my @arr2 = qw(20 50 110 1200 40 100); my %count; my @unique; $count{$_}++ for(@arr1,@arr2); # (20,40,100) - 重複する値を抜き出す @unique = grep{ $count{$_} >= 2 } keys %count; # (30,60,90,10,80) - 重複しない値を抜き出す @unique = grep{ $count{$_} < 2 } keys %count;
for文のこういう使い方は初めて見た。
■参考リンク
Perlで2つの配列の要素から重複を排除する、重複した要素だけ抽出する - Qiita
grep関数 - 特定の条件を満たす配列要素のみ取得 - PerlならサンプルコードPerl入門