Я пытаюсь сравнить каждую строку в CSV-файле с каждым элементом (строками), который я сохранил в массиве, используя Perl. Я хочу вернуть / напечатать в файл строку из файла CSV, только если она не соответствует ни одной из строк в массиве. Я пробовал многочисленные циклы, чтобы достичь этого, но не только не нашел решения, но ни одна из моих попыток не дает мне подсказки относительно того, где я иду не так. Ниже приведены несколько примеров циклов, которые я пробовал:
while (<CSVFILE>) {
foreach $i (@lines) {
print OUTPUTFILE $_ if $_ !~ m/$i/;
}; #foreach
}; #while
И
foreach $i (@lines) {
open (CSVFILE , "< $csv") or die "Can't open $csv for read: $!";
while (<CSVFILE>) {
if ($_ !~ m/$i/) {
print OUTPUTFILE $_;
}; #if
}; #while
close (CSVFILE) or die "Cannot close $csv: $!";
}; #foreach
Вот пример файла CSV, который я пытаюсь:
1,c.03_05delAAG,null,71...
2,c.12T>G,null,24T->G,5...
3,c.87C>T,null,96C->T,82....
И элементы массива (с escape-символами регулярного выражения):
c\.12T\>G
c\.97A\>C
Предполагая только вышеприведенное в качестве входных данных, я надеюсь вернуться:
1,c.03_05delAAG,null,71...
3,c.87C>T,null,16C->T....
, поскольку они не содержат элементов массива. Это ситуация, когда в игру вступают хэши? У меня пока нет большой информации о них, кроме стандартного определения "словарь". Если бы кто-нибудь мог помочь мне разобраться с этой проблемой, это было бы очень признательно. В этот момент я мог бы просто сделать это вручную, поскольку не так много , и мне это нужно как можно скорее, но, поскольку я не смог найти никаких ответов в поиске где-либо еще, я решил, что Стоит спросить.