@array = grep(!$count{$_}++, @array); %count という(作業用)ハッシュを用意し、配列の要素をキーとしてその値をカウントアップする。 引数の @array を要素0から見ていき、その要素が初めての値の場合は、!$count{$_}が真となり (インクリメントは評価の後)、grep の戻り値として判定され、結果、@array が受け取る。 2度目以降は、!$count{$_} が偽になるので、grep の戻り値にはならない。 よって、@array は重複行が削除された配列が入る。 ちなみに、$count{'要素名'} に、カウント数が代入されている。 重複数などをカウントする際は、こっちを使う。