基本上,我循環瀏覽html文件並尋找一些正則表達式。它們匹配的很好,但我不希望每個文件都包含匹配項,但循環運行時,每次迭代都包含相同的匹配項(儘管它不在該文件中)。我假設通過使用$ 1它是堅持通過每次迭代。避免正則表達式匹配變量被重用
我試過在每次真正的匹配之後直接使用一個任意的正則表達式來重置它,但那似乎不起作用。我從這個主意中得到的線索似乎在最佳實踐和原始問題問題上有很多爭論,所以我認爲值得向我的代碼請求具體建議。很可能不是寫在一個偉大的方式之一:
# array of diff filenames
opendir(TDIR, "$folder/diff/$today") || die "can't opendir $today: $!";
@diffList = grep !/^\.\.?$/, readdir(TDIR);
closedir TDIR;
# List of diff files
print "List of Diff files:\n" . join("\n", @diffList) . "\n\n";
for($counter = 0; $counter < scalar(@diffList); $counter++) {
# Open diff file, read in to string
$filename = $diffList[$counter];
open FILE, "<", "$folder/diff/$today/$filename";
while(<FILE>) {
$lines .= $_;
}
close FILE or warn "$0: close today/$filename: $!";
# Use regular expressions to extract the found differences
if($lines =~ m/$plus1(.*?)$span/s) {
$plus = $1;
"a" =~ m/a/;
} else {$plus = "0";}
if($lines =~ m/$minus1(.*?)$span/s) {
$minus = $1;
"a" =~ m/.*/;
} else {$minus = "0";}
# If changes were found, send them to the database
if($plus ne "0" && $minus ne "0") {
# Do stuff
}
$plus = "0";
$minus = "0";
}
如果我把裏面打印了「做的東西」的話,它總是真實,總是顯示在其中一個文件中發現相同的兩個值。 希望我已經足夠好地解釋了我的情況。任何意見表示讚賞,謝謝。
向我們展示循環?你已經發布的代碼似乎很好看後... – Cameron 2013-03-12 21:38:21
當然 - 讓我添加更多的信息 – Chris 2013-03-12 21:38:53
基本上從一個目錄中獲取文件名列表到數組中,循環該數組並打開每個文件一個一。檢查兩個特定的正則表達式。如果兩個都匹配成功,我想將它們發送到數據庫(這一步很好)。如果使用相同的匹配(我知道只有一個文件),循環的每一步都會到達數據庫。 – Chris 2013-03-12 21:46:09