1

我正在学习 perl 并编写一个脚本来将脚本目录树中的所有内容输出到一个文件中。问题出在文本文件中,即使我包含“\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,但这也不起作用。

4

2 回答 2

2

结果代码工作得很好,但我使用 Windows 记事本读取我的输出文件,它不识别“\n”,我只需要在几乎任何其他文本编辑器中打开它就可以看到(记事本++,写字板,emacs)。

如果我不使用 Cygwin,记事本可能会起作用。

于 2013-04-25T07:22:41.717 回答
1

以 APPEND 模式或 WRITE 模式打开文件,并使用打开的文件描述符将数据写入和附加到文件中,使用 perl 中的 PRINT stantment。在 Linux 中,只考虑了“\n”,不适用于 WINDOW 用户,因此 Linux 用户在每一行末尾附加一个额外的字符,称为 NEWLINE“\n”;

于 2016-07-18T10:41:08.587 回答