Я совершенно новичок в Perl, и мне нужно написать программу, в которой найденные кластеры совпадают, если они находятся на определенном расстоянии друг от друга.Итак, я получил массив хешей, содержащий на каждом уровне начальную позицию, конечную позицию и количество совпадений, присутствующих в кластере (1 в начале).
Если я хочу знать, если расстояние между двумясовпадения в порядке, я делаю Begin2-End1
my $DEBUG = 1;
my @hitsarray =();
my ($beginarray,$endarray,$aantalarray);
my $hit = { BEGIN => $beginarray, EIND => $endarray, MATCHES => $aantalarray, };
for (my $k = 0;$k <= $#beginarray;$k++)
{
print $beginarray[$k],"\t",$endarray[$k],"\t",$aantalarray[$k],"\n" if ($DEBUG);
$hit = ();
$hit->{BEGIN} = $beginarray[$k];
$hit->{END} = $endarray[$k];
$hit->{MATCHES} = $aantalarray[$k];
push (@hitsarray,$hit);
}
for ( my $m = 0; $m <= $#hitsarray; $m++)
{
while($hitsarray[$m+1]{BEGIN} - $hitsarray[$m]{END} < 5 && $hitsarray[$m+1]{BEGIN} - $hitsarray[$m]{END} > 3)
{
$hitsarray[$m]{END} = $hitsarray[$m+1]{EIND};
$hitsarray[$m]{MATCHES} +=1;
delete $hitsarray[$m+1];
print $beginarray[$m],"\t",$endarray[$m],"\t",$aantalarray[$m],"\n" if ($DEBUG);
}
}
Но это не работает!Мой компьютер зацикливается и заявляет: «Использование неинициализированного значения в вычитании (-) в строке сценария 55».
Вероятно, что-то связано с использованием ссылок, но я их не совсем понимаю.также пробовал более простую структуру с двумя несвязанными массивами, но у меня та же проблема;
Как вы используете элементы из разных строк (и из разных массивов) длявычитание?
Любая помощь приветствуется !!