나는 단지 펄을 배웠고 동시에 정규 표현식을 배우려고합니다. 기본적으로 로그 파일을 열고 사용자 입력과 일치하는 모든 줄을 새 파일에 인쇄하려고합니다. 다음 코드를 사용하면 "Clinton"이라는 단어를 입력해도 출력이 전혀 들지 않습니다. 내가Perl 정규식이 사용자 입력에서 일치합니다.
print MYFILE if /\Clinton\;
와
print MYFILE if /\$string\;
를 대체 할 경우 예상대로하지만 실행됩니다. 어떤 아이디어? 내가 빠뜨린 것은 간단하다는 것입니다.
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' 수정자를 사용해야합니다. –