2014-02-12 4 views
0

perl에서 search n replace 옵션을 사용하려고 할 때 문제가 있습니다.검색에서 변수 사용 n은 perl로 바꿉니다

이것은 유닉스에서는 문제가되지 않지만 윈도우에서만 나타납니다. 변수를 사용하여 파일을 검색하고 원하는 문자열로 바꿉니다. 또한 perl 스크립트의 한 줄에서 사용하고 있으므로 문제가 추가됩니다!

$oldstring = 1234; 
$newstring = 6789; 

system("perl -pi.back e s/$oldstring/$newstring/g $filename"); 

디렉토리에서 파일 이름을 검색하여 한 줄로 입력으로 전달하고 있습니다. 출력 파일에는 변화가없는 것으로 보이지만 경고 나 실패도보고하지 않습니다.

나는 시도 예상대로
system("perl -pi.back e 's/$oldstring/$newstring/g' $filename"); 

왜 검색이 N 작동하지 않는 대체되고, 너무 다음? 당신은 system()과 명령 행을 인용 적절한 필요

+0

이 유효 펄'아니다 $ oldstring = 1234 $ newstring = 6789'입니다. 각 행의 끝에';'가 없습니다. 실행중인 실제 코드를 게시하십시오. –

+1

@ztirom - 서식 지정 편집에 감사드립니다. – joe

+0

@ Dr.Avalanche - 죄송합니다. 여기 내 첫 번째 게시물입니다. 그것은 대본입니다, 저는 단지 관련 부분 만 게시하려고했습니다. 여전히 실수였습니다. 귀하의 솔루션에 대해 – joe

답변

1

,

system(qq(perl -pi.back -e "s/$oldstring/$newstring/g" $filename)); 

또는 전화 쉘없이 간단하고 효율적인 시스템을 사용

system("perl", "-pi.back", "-e", "s/$oldstring/$newstring/g", $filename); 
+0

주셔서 감사합니다. 이 하나의 라이너가 백 파일을 만들지 않고 창에서 작동하지 않습니까? 하지만 유닉스에는 아무런 문제가없는 것으로 보인다. – joe

+0

@joe check http://stackoverflow.com/questions/2616865/why-do-i-have-to-specify-the-i-switch-with-a-backup-extension-when-using-active –

관련 문제