4.8 一方の配列にあってもう一方にない要素を見つける
## 単純な方法 # @Aと@Bにはすでに要素が格納されている %seen = (); # @Bの要素を判定するためのルックアップテーブル @aonly = (); # 結果 # ルックアップテーブルの作成 foreach $item (@B) { $seen{$item} = 1 } # @Aにはあり、@Bにはない要素を検出 foreach $item (@A) { unless ($seen{$item}) { # %seen内に存在しない要素を@aonlyに追加する push(@aonly, $item); } } ## Perl的な方法 my %seen; # ルックアップテーブル my @aonly; # 結果 # ルックアップテーブルの作成 @seen{@B} = (); foreach $item (@A) { push(@aonly, $item) unless exists $seen{$item}; } ## ループを使用しない方法 my %seen; @seen{@A} = (); delete @seen{@B}; my @aonly = keys %seen;