Я новичок в Perl, и мне нужно почистить данные. Просто для быстрого подсчета того, что я делаю, у меня есть список идентификаторов (Horse_ID), каждый идентификатор для одной лошади. Лошади соревновались в нескольких гонках, поэтому их удостоверение напечатано в нескольких строках (каждая строка соответствует одному соревнованию). Для каждой гонки они соревновались с разными тренерами (или нет).
Исходные данные, чтобы точно показать, с чем я имею дело
Я хотел бы сохранить в ha sh имена разных дрессировщиков для каждой лошади и количество разных дрессировщиков для каждой лошади.
После того, как я проконсультировался по поводу переполнения стека, я создал код. Но мой код печатает только имя найденного тренера и неправильное количество тренеров (иногда 0, что ничего не значит). Я не могу найти ошибку ... Это мой код:
if (($coach =~ /\w+/) && ($Horse_ID ne '')) {
if (($trainerhash -> {$Horse_ID} -> {trainerinfo}) && ($trainerhash -> {$Horse_ID} -> {trainerinfo} !~ /$Horse_ID/)) {
$trainerhash -> {$Horse_ID} -> {trainerinfo} .= "\t$coach";
my @coach = split (/\s/, $coach);
$numtrainers = $#coach+1;
}
elsif (!$trainerhash -> {$Horse_ID} -> {trainerinfo}) {
$trainerhash -> {$Horse_ID} -> {trainerinfo} = "$coach";
}
}
# Trainer hash - Number of trainers & trainer names
$trainerhash -> {$Horse_ID} -> {trainerinfo} = "$numtrainers\t$coach";
Если у кого-то есть идея, было бы здорово ... Я уже пробовал использовать для l oop, но результат тот же.
Входные данные
Horse_ID name date localisation distance race_kategory rider rider_weight coach
1 Abakus 03/11/2018 Warszawa 1400 I V_Popov 58 S_Vasyutov 6
1 Abakus 09/09/2018 Warszawa 1800 I V_Popov 58 S_Vasyutov 5
1 Abakus 12/08/2018 Warszawa 1800 I A_Kabarov 58 S_Vasyutov x
1 Abakus 30/06/2018 Warszawa 1800 I V_Popov 58 S_Vasyutov 8
1 Abakus 09/06/2018 Warszawa 1600 II V_Popov 58 S_Vasyutov 1
2 Abbas 19/11/2017 Warszawa 2000 I S_Vasyutov 58 S_Vasyutov 3
2 Abbas 28/10/2017 Warszawa 1400 II P_Naoniechnyi 58 S_Vasyutov x
2 Abbas 08/10/2017 Warszawa 1400 II P_Naoniechnyi 58 S_Vasyutov x
Заранее благодарю за помощь,