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;
}
面倒なパターンがあってなんか酷くなった(;´Д`)