2012-12-13 5 views
4

Perl에서 open()을 사용하여 기존 디렉토리에 새로운 파일을 작성하려면 어떻게해야합니까? Perl을 사용하여 디렉토리에 파일 만들기

나는 다음과 같은 시도 :

my $existingdir = './mydirectory'; 

open my $fileHandle, ">>", "$existingdir/filetocreate.txt" or die "Can't open '$existingdir/filetocreate.txt'\n"; 

그러나 그것은 작동하지 않습니다.

+4

"Can not open ..."대신 "Can not open ... : $!"라고 말합니다. 오류의 정확한 이유를 알아야합니다. ./mydirectory가 없거나 쓰기 권한이 없습니다. – Himanshu

+1

'mydirectory'가 현재 작업 디렉토리에 존재하고 그 디렉토리에 생성 할 권한이 있으면 제대로 작동합니다. – ikegami

+1

예,이 코드는 저에게 잘 작동합니다. 확인해야 할 또 다른 사항은 Perl의 현재 작업 디렉토리가 여러분이 생각하는 것입니까? CWD : http://perldoc.perl.org/Cwd.html – dan1111

답변

11
my $existingdir = './mydirectory'; 
mkdir $existingdir unless -d $existingdir; # Check if dir exists. If not create it. 
open my $fileHandle, ">>", "$existingdir/filetocreate.txt" or die "Can't open '$existingdir/filetocreate.txt'\n"; 
print $fileHandle "FooBar!\n"; 
close $fileHandle; 

이 방법이 유용 할 것입니다.

+0

-1로 확인하십시오. OP는 "기존 디렉토리에"파일을 생성하려고합니다. 이렇게하면 스크립트가 죽지 않고 실행될 수 있지만 실제로 문제를 진단하고 해결하지는 않습니다. – dan1111

+2

글쎄, 나는 대답이 받아 들여진 것을 본다. 내 포인트가 있다고 생각하는 동안 실제 문제가 무엇인지 OP의 마음을 성공적으로 읽었으므로 나는 내 downvote를 제거합니다! – dan1111

+1

File :: Path의'mkpath'를'mkdir'보다 사용하는 편이 낫습니다. – ikegami

0

my $ FILE;

open ($ FILE, ">> File.txt") || die ("파일을 열 수 없습니다 :". $!);

닫기 ($ FILE);

File.txt 앞에 디렉토리 위치를 추가 할 수 있습니다.

관련 문제