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