2012-10-10 4 views
2

안녕하세요!Perl - 출력을 다른 디렉토리의 파일로 출력

이전에 게시 되었으면 죄송합니다. 찾을 수 없습니다. 나는 올바른 방향으로 약간의 포인트가 필요합니다. 이것은 나의 숙제이며 거의 완료되었다고 느낍니다. 내가하고 싶은 일은 스크립트가 실행되는 다른 폴더의 파일에서 데이터를 가져 와서 Perl 내에서 데이터를 처리 한 다음 출력을 다른 디렉토리에 인쇄하는 것입니다. 이제 두 부분을 다 처리했는데 실패한 것은 Perl이 파일을 저장할 위치의 경로를 찾지 못한다는 것입니다. 그것은 단지 "그 이름을 가진 파일이나 디렉토리가 존재하지 않습니다"라는 것입니다. 내가 바보 같은 그 뭔가를 내기

my @files = <$ENV{HOME}/Docs/unprocessed/*.txt>; 
my $path = "$ENV{HOME}/Docs/results"; 

<looping through @files, processing each file in the unprocessed folder...> 

open (OUTFILE, $path . '>$file') or die $!; 
print OUTFILE ""; # "" Is really the finished calculations from the loop, not important here. 
close FILE; 
close OUTFILE; 

...

+0

감사합니다! 'File :: Basename;을 사용하고 'open (OUTFILE, "> $ path /". basename ($ file)) " 트릭을 했습니까? –

+0

제목에 '해결'할 필요가 없습니다. – Toto

답변

3

당신은 파일 이름에 >은 "쓰기"토큰을 혼합되어 있기 때문에 : 여기에 대한 스크립트의 일부입니다. 이 :

open (OUTFILE, $path . '>$file') 

해야합니다

open (OUTFILE, ">$path/$file") 

또한 가능성이 파일 이름에서 .../Docs/unprocessed/ 접두사를 제거해야합니다 : 답변에 대한

use File::Basename; 

open (OUTFILE, ">$path/" . basename($file)) 
+0

그것은 작동합니다! Howie 백만명 고마워! 이제는 내 부팅이 특정 Perlmonk과 약속이 있습니다 ... –

+2

3 개의 인자가 열려서 이상한 일을 막기 위해'open (OUTFILE, '>', "$ path /". basename ($ file)) 귀하의 변수. – RobEarl

+4

@RobEarl 어휘 파일 핸들을 사용하는'open'의 3 인자 버전 외에도 훨씬 더 좋을 것입니다. '$ fh, '', '...'을 열거 나 비참하게 죽는다; – dgw

관련 문제