2013-04-24 164 views
1

我正在學習perl並編寫腳本以將腳本的目錄樹中的所有內容輸出到文件中。問題是在文本文件中,儘管我包含「\ n」,但整個輸出仍在一行中。我將保存代碼打印到控制檯,然後在那裏獲得所需的結果,這是每行一個條目。在perl中寫入新行到文件

#!/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放在「Directory:」之前,那也沒有用。

+0

適用於我,你在哪個操作系統上? – chrsblck 2013-04-24 23:01:48

+1

你忘了你追加到'temp.txt'而不是覆蓋它嗎?所以它可能看起來像輸出永遠不會改變? – TLP 2013-04-24 23:03:13

+0

我在Windows 7上,使用cygwin來運行我的腳本並用記事本++編碼。好的,所以當我在emacs中打開時,文件有新的行,而不是在Windows的記事本中。它也出現在記事本++和寫字板。這麼簡單......我一直在試圖弄清這個問題接近一個小時。謝謝您的幫助。 – Tyler 2013-04-24 23:08:39

回答

2

原來的代碼工作正常,但我使用Windows記事本來讀取我的輸出文件,它不能識別「\ n」,我只需要在任何其他文本編輯器中打開它就可以看到(記事本++,wordpad,emacs)。

如果我不使用Cygwin,可能是記事本本可以工作。

+1

如果你想以記事本識別的格式輸出,打開FILE,輸入:'crlf','input.txt' – 2013-04-28 01:08:43

1

以APPEND模式或WRITE模式打開文件,並使用打開的文件描述符來寫入數據並將其附加到文件中,並使用perl中的PRINT stantment。 在Linux中,只考慮「\ n」,而不適用於WINDOW用戶,因此Linux用戶 在每一行尾添加一個名爲NEWLINE「\ n」的額外字符;