我只是在學習perl,我正試圖在同一時間學習正則表達式。基本上我試圖打開一個日誌文件,並打印出符合用戶輸入到新文件的任何行。使用下面的代碼,如果我輸入「克林頓」一詞,我就根本沒有輸出。但是,如果我更換來自用戶輸入的Perl正則表達式匹配
print MYFILE if /\$string\;
與
print MYFILE if /\Clinton\;
它運行正常。有任何想法嗎?我知道這很簡單,我錯過了。
print "Enter a word to look up: ";
$string = <>;
print "You put $string";
open(LOG,"u_ex121011.log") or die "Unable to open logfile:$!\n";
open (MYFILE, '>>data2.txt');
while(<LOG>){
print MYFILE if /\Q($string)\E/;
}
close (MYFILE);
close(LOG);
print "Check data2.txt";
太棒了。謝謝。 – Ryan
我對此有另一個疑問。我的日誌文件具有由空格分隔的列。我知道我只想在第四空間出現之前的一切,而不想要其他東西。我會怎麼做? – Ryan
-1爲壞建議刪除'\ Q \ E'修飾符。由於'$ string'包含用戶輸入,因此您應該使用'\ Q \ E'修飾符來轉義任何元字符,除非您有意將用戶輸入解釋爲正則表達式而不是字符串文字。 –