08/03/14 19:17:40
>>12
暇だから、、、
最後の質問は正解。
一番上の grep BLOCK の中だけ解説。
1. $seen{$_} で %seen に $_ が登録されてるかどうか調べる。
当然最初の一回目は無いから偽。二回目以降は真。
2. ! によって1.の条件が偽の時のみ真。
3. ++ によって $_ を %seen に登録。(++によって数値と見なされ偽を0と
解釈。で普通に1足される)。
4. 1. に戻るが、同じ物が二回目に出てくると真、なので 2. の条件に
当てはまらない。
結果、 uniq なもののみがトラップされる。
uniqu はまあ論外。uniqd は ++ の挙動さえ理解してれば問題ない。
( $seen{$_} == 1 が解釈された後に $seen{$_} に1が足される。
ちなみに ++ $seen{$_} == 1 は uniq と同じ挙動になる。)