我試圖將CSV文件中的每一行與我使用Perl存儲在數組中的每個元素(字符串)進行比較。只有在數組中沒有任何字符串匹配的情況下,我纔想從CSV文件返回/打印到文件行。我試過很多種循環來達到這個目的,但是不僅沒有找到解決辦法,而且我的任何嘗試都沒有給我提供關於我哪裏出錯的線索。下面是我試過的控制環路的幾樣:如何僅返回不匹配數組的任何值的行?
while (<CSVFILE>) {
foreach $i (@lines) {
print OUTPUTFILE $_ if $_ !~ m/$i/;
}; #foreach
}; #while
AND:
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....
而數組元素(帶正則表達式轉義字符):
c\.12T\>G
c\.97A\>C
假設只有上述作爲輸入數據,我希望回去:
1,c.03_05delAAG,null,71...
3,c.87C>T,null,16C->T....
,因爲它們不包含任何從數組中的元素。這是Hashes發揮作用的情況嗎?除了標準的「詞典」定義之外,我還沒有很好地處理它們。如果有人能幫我解決這個問題,我將不勝感激。一這點我可能只是做手工,因爲沒有很多,我需要這一點的方式儘快,但因爲我無法找到任何答案,尋找其他地方我想這是值得的要價。
使用嚴格;使用警告; – Tim 2011-03-06 13:00:02
我有嚴格和警告設置,但我運行腳本時工作正常,但要麼提供空白CSV作爲輸出或只是重新打印原件。我在這裏錯過了一件非常明顯的事情嗎? – Nate 2011-03-06 13:04:40