各配列の項目と重複する項目を削除する

http://www.rfs.jp/sb/perl/05/grep.html
http://www.din.or.jp/~ohzaki/perl.htm#ArrayUnique
ここら辺を参考に作る。

@bkm_topic= ( “1\t2\t3\t4″,”1\t2\t5\t4″,”1\t2\t3\t5” );
のようなデータがあるときに、重複する配列を削除する。
ただし、各配列の4項目目は無視したい。異なっていても重複と見なす。

    {
    my %tmp;
    @bkm_topic = grep(  !$tmp{&aaa($_)}++, @bkm_topic );
    sub aaa{
        my($a,$b,$c,$d)=split(/\t/,$_[0]);
        return “$a\t$b\t$c”
    }
    }

3個目までの項目をチェックして、4項目は異なっていても重複と見なす
すると、このようになる。
@bkm_topic= ( “1\t2\t3\t4″,”1\t2\t5\t4” );

残る配列は、最初の方なので、あらかじめソートなどをしておく。

 

参考になった方、誤りを見つけた等、コメントを残してくれるとうれしいです。

Loading Facebook Comments ...

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です