2013-04-24 2 views
1

나는 펄을 배우고 스크립트의 디렉토리 트리에있는 모든 내용을 파일에 출력하는 스크립트를 작성하고있다. 문제는 텍스트 파일에서 "\ n"을 포함하더라도 전체 출력이 한 줄에있는 것입니다. 콘솔에 코드 저장이 저장되어 있으며 원하는 결과를 얻을 수 있습니다. 이는 한 줄에 하나의 항목입니다.펄의 파일에 새 줄 쓰기

#!/usr/bin/perl -w 

use Cwd; 
use File::Find; 
use strict; 

my $file = "temp.txt"; 
my $dir = getcwd; 

unless (open FILE, '>>' . $file) { 
    die "\nUnable to create $file\n"; 
} 

find(\&print_type, $dir); 

sub print_type { 
    if (-f) { 
     print FILE "File: " . "$_\n"; 
     print "File: " . "$_\n"; 
    } 
    if (-d) { 
     print FILE "Directory: " . $_ . "\n"; 
     print "Directory: " . $_ . "\n"; 
    } 
} 
close FILE; 

또한 "디렉토리 :"앞에 \ n을 넣으려고 했는데도 작동하지 않았습니다.

+0

나를 위해 작동합니다. 어떤 OS를 사용하고 계십니까? – chrsblck

+1

'temp.txt'에 덧붙이고 있다는 것을 잊었습니까? 출력이 결코 바뀌지 않는 것처럼 보일 수도 있습니다. – TLP

+0

저는 Windows 7에서 cygwin을 사용하여 스크립트를 실행하고 메모장 ++로 코딩합니다. 좋아, 그래서 이맥스에서 열 때 파일은 새로운 줄을 가지고있다. 단지 창문에 노트 패드가 없다. 그것은 또한 메모장 ++ 및 워드 패드에도 나타납니다. 그래서 간단합니다 ... 나는 이것을 한 시간 가까이 찾아 내려고 노력했습니다. 도와 주셔서 감사합니다. – Tyler

답변

2

코드는 잘 작동하지만 Windows 메모장을 사용하여 출력 파일을 읽었으며 "\ n"을 인식하지 못합니다. 단지 다른 텍스트 편집기에서 열어 볼 필요가있었습니다. (notepad ++, wordpad, emacs).

Cygwin을 사용하지 않았다면 메모장이 작동했을 수 있습니다.

+1

메모장에서 인식 할 수있는 형식의 출력을 원하면 'open FILE', '<< : crlf', 'input.txt' –

1

APPEND 모드 또는 WRITE 모드에서 파일을 열고 perl에서 PRINT stantment를 사용하여 파일에 데이터를 쓰고 추가하는 데 열린 파일 설명자를 사용하십시오. 리눅스에서는 "\ n"만 고려되며, WINDOW 사용자는 고려하지 않으므로 리눅스 사용자 은 NEWLINE "\ n"이라는 줄 끝마다 추가 문자를 추가합니다.