Perlで2つの配列の両方に含まれる要素を、foreachを使わずに抜き出す方法は?
id:smoking186さんの同村指数計測の過程で触れられてた問題。ちょっと考えてみたんですけど、いい方法が思いつきません。うむむむむ……。
@a = (1,2,3,4,5); @b = (1,3,5); # 配列をハッシュのキーに変換 %a = map { $_ => 1 } @a; %b = map { $_ => 1 } @b; # %aのキーのうち%bのキーに含まれる要素を取得する @c = grep {exists $b{$_}} keys(%a);
もし配列の要素がユニークだとしたら、最初からハッシュにしておけばforeachより速くなるかも。