Perlで一意な(Uniqueな)配列を取り出す方法
Perl Adventカレンダーのsekimura氏のエントリ。
これを見るまでずっとハッシュにいれてkeysしてユニークな配列を取り出してました。
しかし,このエントリを見てから,なんてスマートな方法があるんだ!とこっそり感動してました。
my %seen; my @uniq = grep { ++$seen{$_} < 2 } (@cities, @prefs);
-
- -
7月17日 追記
http://d.hatena.ne.jp/ichirin2501/20110716/1310804204
を参考にすると
sub unique_slice{ my @array = @_; my %hash; @hash{@array} = (); return keys %hash; }
が良いみたい。みなさん,スマートだ。