使用perl创建列出目录中所有文本文件的新文件

时间:2016-04-01 14:20:44

标签: perl

我正在尝试使用text列出目录中的所有perl个文件。下面的确运行但生成的文件为空。这似乎很接近但可能不是我需要的。谢谢你:)。

get_list.pl

#!/bin/perl

# create a list of all *.txt files in the current directory
opendir(DIR, ".");
@files = grep(/\..txt$/,readdir(DIR));
closedir(DIR);

# print all the filenames in our array
foreach $file (@files) {
print "$file\n";
}

2 个答案:

答案 0 :(得分:5)

如上所述,你的grep错了:

@files = grep(/\..txt$/,readdir(DIR));

在正则表达式中 - .表示任何字符。所以你会找到一个名为

的文件
fish.mtxt

但不是名为

的文件
fish.txt

因为那个点。

您可能想要grep /\.txt/, readdir(DIR)

但就个人而言,我不会打扰,而只是使用glob

foreach my $file (glob "*.txt") {
    print $file,"\n";
} 

另外 - 启用use strict; use warnings;。在您知道为什么要关闭它们之前,请考虑它们。 (有时候,如果你真的需要的话,你会知道它们是什么)。

答案 1 :(得分:2)

你有一个多余的点:

@files = grep(/\..txt$/,readdir(DIR));

应该是:

@files = grep(/\.txt$/,readdir(DIR));