2013-12-22 2 views
0

저는 Perl에 익숙하지 않습니다. 저는 이걸 작동시키는 법을 이해하려고 노력하고 있습니다. 여기Perl 커맨드 라인 인쇄 - 커맨드 라인에서 Regexp 테스트하기

Perl Regex - Print the matched value 내가 함께 작동하도록 노력하고있어 예는 다음과 같습니다 :

나는이 스레드에서 예를 찾을 내가 cmd를 사용하여 실행 시도했습니다

perl -e '$str="the variable Xy = 3 in this case"; print $str =~ /(Xy = 3)/;' 

하지만이 오류가 발생합니다 :

"-e 줄 1의 EOF 앞에 문자열 종결 자" ' "를 찾을 수 없습니다."

PowerShell에서 실행할 때 아무 일도 일어나지 않습니다.

나의 궁극적 인 목표는 명령 행에서 변수를 설정하고 regexp find (그리고 때로는 바꾸기)를 실행하고 그 결과를 출력하는 것이다. 이렇게하면 정규 표현식 패턴을 작성할 때마다 스크립트를 작성할 필요가 없습니다.

나는 디버거를 사용하여 시도했지만, 내가 변수를 설정 한 후이 작업을 수행 할 때 아무 반응이 없습니다 :

확인
print $str =~ /(Xy = 3)/; 

답변

0

가 잘 나는 PowerShell을 위해 그것을 알아 냈어. 나는 큰 따옴표를 피해야했다.

perl -e '$str=\"the variable Xy = 3 in this case\"; print $str =~ /(Xy = 3)/;' 

그리고 같은 내가 작은 따옴표가 문자열 구분하지 않기 때문에 큰 따옴표와 작은 따옴표를 대체 한 것을 제외하고 cmd를 위해 간다.

perl -e "$str=\"the variable Xy = 3 in this case\"; print $str =~ /(Xy = 3)/;" 
+1

이스케이프 처리를 피하기 위해 문자열 정의를 ""대신 qq {}로 변경합니다. perl -e "$ str = qq {이 경우 변수 Xy = 3} print $ str = ~/(Xy = 3) /;" – Miller

1

그것은 당신이 당신의 펄 물건의 대부분을위한 따옴표 필요하지만, 명령 행에서 탈출하는 것은 결국 지저분하기 때문에 Windows 환경에서 Perl 스크립트 내부에 문을 넣어하는 것이 좋습니다.

관련 문제