perl 에서 라인추가 perl

일단 주의사항부터 

windows os에서는 명령행에서 따옴표사용에 주의를 해야됨

c:\> perl -e 'print "hello\n" ' 

이렇게 하면 

Can't find string terminator "'" anywhere before EOF at -e line 1.

이런 메시지를 만나게 된다.

c:\> perl -e " print 'hello \n' " 

또는 

c:\> perl -e " print qq(hello \n) "

이렇게 해야됨

hello.java 파일의 첫번째 라인에 package io; 를 추가하려면 

c:\> perl -pi.bak -e " $.==1 and print qq(package io;\n) " hello.java

이렇게 하면 hello.java 파일에 추가가 되고 원본은 hello.bak 에 보관된다. bak 파일을 만들고 싶지 않아서 옵션을 추가시켜보기도 하고 변경 시켜보기도 했는데 내 능력으로는 안됨.

폴더내의 모든 java파일에 같은 걸 하고자 아래와 같이 하면 에러메시지를 만난다.

c:\> perl -pi.bak -e " $.==1 and print qq(package io;\n) " *.java
Can't open *.java: Invalid argument.

아래와 같이 해야된다.

c:\> for %k in (*.java) do perl -pi.bak -e "$.==1 and print qq(package io;\n)" %k


덧글

  • camel 2015/01/05 22:59 # 삭제 답글

    perl -e " print 'hello n' " 하면 new line문자는 ' '로 묶은 문자열에 interpolation이 적용안되니 perl -e " print qq(hello n) " 와 같은건 아닌것 같네요 :)
  • with_duke 2015/01/06 20:12 # 답글

    예. 맞습니다. 지적하신 그대롭니다. 작은 따옴표로 묶으면 \\n이 new line이 아니라 단순히 문자로 인식됩니다. 지적 감사드립니다.
댓글 입력 영역