【发布时间】:2017-10-16 19:45:44
【问题描述】:
我正在编写一个 Perl 脚本,该脚本使用 glob 检查目录的内容,然后将输出写入新文件。但是文件中的每个条目都使用空格分隔,我需要它在新行中打印每个条目。我的代码是这样的
open(New, ">/u/smanik/xyz.txt");
@files = glob('/user/manik/*.csv');
$size = @files;
print "Total no of files: $size \n";
print New @files;
open(New, "/user/manik/xyz.txt");
while ( <New> ) {
print "$_";
}
close(New);
这是通过在文件中打印来给出输出
/user/manik/A.csv /user/manik/B.csv
但我需要像这样将它打印在文件中
A.csv
B.csv
C.csv
我尝试在第五行添加\n,但没有奏效。
【问题讨论】:
-
我认为两者之间没有空格。如果这是您的完整代码,它应该是
/user/manik/A.csv/user/manik/B.csv。也许你有print New "@files"? -
\n是换行符,而不是/n -
抱歉打印错误我只用了\n
-
这是一个快速的代码审查 首先,您应该始终在代码中使用
use strict和use warnings,并使用my以词法方式声明所有变量,即my $size = @files。您还应该使用词法文件句柄而不是全局变量(您的New,按照惯例应该全部大写,所以NEW)。如果您的文件名来自 var 并且在前面包含元字符,您还应该使用三参数open以避免安全问题。最后,检查错误:open my $fh, '>', '/user/manikxyz.txt' or die $!. -
我已经修复了您的代码示例中的缩进。不客气,但下次请自己做。一致的缩进是理解代码的重要工具,如果你要求一群人阅读和理解你的代码,让他们尽可能简单是礼貌的
标签: perl