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



我正在尝试使用perl列出目录中的所有text文件。以下操作确实运行,但生成的文件为空。这看起来很接近,但也许这不是我需要的。谢谢:)。

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 "$filen";
}

如前所述,您的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;。在你知道为什么要关掉它们之前,要把它们视为强制性的。(有时,如果你真的需要的话,你会知道它们是什么)。

您有一个多余的点:

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

应该是:

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

最新更新