2010-02-28 3 views
2

perl에서 파일을 출력하려고합니다.Perl : bin 디렉토리 이외의 디렉토리에 어떻게 써야합니까?

나는 .. 완벽하게 작동

open(my $out, ">", "output.html") or die "Can't open output.txt: $!"; 
print $out "something!"; 

을 같은 파일과 출력을 엽니 다. 내가 뭔가 잘 실행 않습니다이

open(my $out, ">", "c:\somedirectory\output.html") or die "Can't open output.txt: $!"; 
print $out "something!"; 

로 변경하는 경우 (나는 '경우 output.txt 열 수 없습니다'메시지가 표시되지 않습니다)하지만 난 디렉토리에 파일을 볼 때 난 그냥 출력이 없다 . 경로가없는 상태로두면 파일이 휴지통에 있습니다.

무엇이 여기에 있습니까? 다른 위치로 출력하려면 어떻게해야합니까?

또한이 .bat 파일을 사용하여 .pl을 실행 중입니다.

cd\ 

cd \xampp\perl\bin 

perl "C:\somedirectory\languages.pl" 

pause 

답변

10

큰 따옴표 안에 \은 이스케이프 시퀀스를 시작합니다. 알 수없는 이스케이프는 무시됩니다.

print "abc\tdef"; 
# abc  def 
print "c:\somedirectory\output.html"; 
# c:somedirectoryoutput.html 
print qq(c:\somedirectory\output.html); 
# c:somedirectoryoutput.html 

백 슬래시가 큰 따옴표를 통과하도록 두 번 올릴 수 있습니다. 이스케이프 시퀀스는 작은 따옴표 내에서 인식되지 않기 때문에

print "c:\\somedirectory\\output.html"; 
# c:\somedirectory\output.html 
print qq(c:\\somedirectory\\output.html); 
# c:\somedirectory\output.html 

당신은 대신 큰 따옴표 작은 따옴표를 사용할 수 있습니다.

print 'c:\somedirectory\output.html'; 
# c:\somedirectory\output.html 
print q(c:\somedirectory\output.html); 
# c:\somedirectory\output.html 

그리고 마지막 옵션 :는 Win32와 NT API를 행복하게 디렉토리 구분 기호로 / 단지뿐만 아니라 \ 취급합니다. 이상하게 보일 수도 있지만 다음과 같이 작동합니다.

open(my $out, ">", "C:/somedirectory/output.html"); 
+0

솔직히 말해서, 백 슬래시가 많이 보 였다고 생각합니다. –

4

Windows 경로의 디렉토리 구분자로 이중 백 슬래시를 사용하거나 간단한 슬래시를 사용해야합니다.

+0

이상한 '출력 파일을 열 수 없습니다.'라는 메시지가 표시되지 않습니다. 하지만 고마워! – ctrlShiftBryan

+2

@ctrlShiftBryan 그 이유는 * 파일을 열 때 * 성공적으로 파일을 열었 기 때문입니다. 주어진 시간에 실수로 만든 휴지통 파일을 찾을 수 있습니다. :) – hobbs

관련 문제