2013-02-12 3 views
0

오류 메시지가 표시되는 것에 대해 여러 게시물을 읽으십시오. EOF 전에 문자열 종결자를 찾을 수 없습니다 ... EOF 전에는 문자열 종결 자 " '"를 찾을 수 없습니다 ...perl의 문자열 터미네이터에 대해 혼동을 들었습니다

take-home 메시지는 작은 따옴표를 사용하지 않아도 실제로 이해한다고 생각하지 마십시오. 그래, 나는 작은 따옴표를 사용하지 않도록 노력할 것이다. 하지만 여전히, 가능하면 사람이 펄 다르게

#!/usr/bin/perl -w 
#backwhacking 
print "c:\\WINNT\\Profiles\\\n"; 
print 'c:\WINNT\Profiles\ ', "\n"; 

#!/usr/bin/perl -w 
#backwhacking 
print "c:\\WINNT\\Profiles\\\n"; 
print 'c:\WINNT\Profiles\', "\n"; 

첫 번째 스크립트는 출력 반면

c:\WINNT\Profiles 
c:\WINNT\Profiles 

와 잘 실행을 보는 방법 날의 측면에서 두 스크립트의 차이점을 이해하는 데 도움이 수 두 번째 스크립트는 스크립트 종료 자 " '"를 찾을 수 없다는 것과 같은 오류 코드를주었습니다

그리고 왜 작은 점이있는 공간이 있든 없든간에 펄 프로그래밍이 구별해야하는 이유는 무엇입니까? 미안하지만 비공식적 인 사람에게는 다소 사소한 것처럼 보입니다.

+6

경로에 슬래시를 사용하면 더 행복해집니다. – tchrist

+0

@tchrist 20 년 동안 Windows 개발자의 95 %는 여전히 슬래시를 사용할 수 있다는 것을 알지 못했을 것입니다. – Ingo

+0

출력 예제가 좋지 않다고 생각합니다. 테스트 할 때 1 차 및 2 차 인쇄 모두 백 슬래시를 인쇄했습니다. 출력은 "c : \ WINNT \ Profiles \"이고 "c : \ WINNT \ Profiles"가 아닙니다. –

답변

3

'스타일 따옴표는 백 슬래시를 사용하여'문자를 이스케이프 처리합니다.

그래서 : print '\''; '문자가 아닌 \'문자열을 인쇄합니다.

'whatever \'을 인쇄하면 끝 부분에 공백이있는 <이 인쇄됩니다. 하지만 다음과 같이하면 :

print 'whatever \' 

백 슬래시가 이스케이프되기 때문에 종료 문자열이 아닙니다. 그래서 다음은 , "\n";은 문자열의 일부로 취급됩니다.

+0

'c : \ WINNT \ Profiles \', "\ n"; –

+0

죄송합니다, 독자 분의 의견을 이해할 수 없습니다. –

+0

죄송합니다. 불완전한 메시지를 삭제 한 것으로 생각합니다. 실수로 클릭하십시오. 후속 질문은이 스크립트에서 'c : \ WINNT \ Profiles \', "\ n"; Perl이 작은 따옴표를 먼저 보지 않았습니까? 그렇다면 역 슬래시를 "무시"하는 것을 "무시"해서는 안됩니까? Perl이 백 슬래시를 여전히 "escaper"로 보는 경우 Perl이 "W"및 "P"를 이스케이프해서 c : INNTrofiles와 같은 것을 인쇄해서는 안됩니까? –