我正在尝试使用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));