У меня есть 2 файла. Один файл - это данные, которые обновляются каждые 10 минут, а вторая - данные, которые ранее использовались. То, что я пытаюсь сделать, это взять одну строку из нового файла и пропустить через каждую строку второго файла и посмотреть, соответствует ли она одному. Если это так, я не хочу его использовать, но если нет совпадения, я хочу добавить его в строку. В том, что я сделал до сих пор, кажется, что проверка никогда не набирает совпадения, даже если она есть. Вот то, что у меня есть, и образец данных, которые я использовал из обоих файлов. CHECKHAIL и USEDHAIL являются двумя файламиLooping через файлы с perl
while(my $toBeChecked = <CHECKHAIL>){
my $found = 0;
seek USEDHAIL, 0, 0 or die "$0: seek: $!";
while(my $hailCheck = <USEDHAIL>){
if($toBeChecked == $hailCheck){
$found += 1;
}
}
print USEDHAIL $toBeChecked;
if ($found == 0){
$toEmail .= $toBeChecked;
}
}
print $toEmail;
return;
}
CHECKHAIL выборочные данные
2226 175 2 NE LAWRENCE DEADWOOD SD 44.4 -103.7 (UNR)
2305 200 2 S SISKIYOU GREENVIEW CA 41.52 -122.9 2 INCH HAIL REPORTED WITH STORM JUST SOUTH OF GREENVIEW. (MFR)
2350 200 DANIELS E FLAXVILLE MT 48.8 -105.17 GOLF BALL TO HEN EGG SIZED HAIL (GGW)
2350 175 5 N DANIELS RICHLAND MT 48.89 -106.05 DESTROYED CROPS (GGW)
USEDHAIL выборочные данные
2226 175 2 NE LAWRENCE DEADWOOD SD 44.4 -103.7 (UNR)
2305 200 2 S SISKIYOU GREENVIEW CA 41.52 -122.9 2 INCH HAIL REPORTED WITH STORM JUST SOUTH OF GREENVIEW. (MFR)
Это звучит неплохо, а сложность задачи - O (n ** 2). Просто поместите данные в базу данных, добавьте ограничение первичного ключа на то, что определяет его как UNIQUE, добавьте еще один столбец «date_entered DEFAULTS CURRENT_TIMESTAMP», а затем SELECT, где «date_entered> TODAY -« 1 день »:: interval'. –