2006/04/13 (木) 23:01:12        [qwerty]
直した

91行目あたりの

            push ( @tid, $tid_ );
            push ( @start, $r_start );
            push ( @ch, $ch_ );

の直前にこれを追加

            #放送局をマージ
            my @start_i = grepindex( $r_start, @start );#開始時間
            my @title_i = grepindex( $title_, @title ); #番組名
            if( @start_i != 0 && @title_i != 0 )#マージできる可能性
            {
                #開始時間と番組名合致リスト検索
                my @multi_i = ();
                foreach my $title_i ( @title_i )
                {
                    foreach my $start_i ( @start_i )
                    {
                        if( $title_i == $start_i )
                        {
                            push( @multi_i, $start_i );
                        }
                    }
                }

                #回とサブタイトルの確認
                my $marge_num = 0;
                foreach my $multi_i ( @multi_i )
                {   #回とサブタイトルは無いことがあるかも
                    if( $subtitle_ eq '' || $subtitle[$multi_i] eq $subtitle_ )#カラか一致
                    {
                        if( $number_ eq '' || $number[$multi_i] eq $number_ )#カラか一致
                        {   #この$multi_iインデックスが当たり #$tidは先勝ちで破棄
                            $ch[$multi_i] .= '/'.$ch_;
                            $marge_num++;#マージ回数
                        }
                    }
                }

                if( 0 < $marge_num )
                {
                    next;#マージが実行されたので次
                }
            }


適当な所に以下の関数を追加

#配列内index位置取得 複数ヒットあり
sub grepindex
{
    my( $str, @array ) = @_;
    my( $i, @ret );

    @ret = ();

    for( $i = 0; $i < @array; $i++ )
    {
        if( $str eq $array[$i] )
        {
            push( @ret, $i );
        }
    }

    return @ret;
}


面倒なパターンがあってなんか酷くなった(;´Д`)