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

使用perl创建新文件,列出目录中的所有文本文件,perl,Perl,我试图使用perl列出目录中的所有文本文件。下面的确实运行,但生成的文件为空。这似乎很接近,但可能不是我需要的。谢谢 get_list.pl 如前所述,您的grep是错误的: @files = grep(/\..txt$/,readdir(DIR)); 在正则表达式中-。表示任何字符。因此,您将找到一个名为 fish.mtxt 但不是一个名为 fish.txt 因为那个点 您可能想要grep/\.txt/,readdirDIR 但就我个人而言,我不想麻烦,只需要使用glob foreach

我试图使用perl列出目录中的所有文本文件。下面的确实运行,但生成的文件为空。这似乎很接近,但可能不是我需要的。谢谢

get_list.pl


如前所述,您的grep是错误的:

@files = grep(/\..txt$/,readdir(DIR));
在正则表达式中-。表示任何字符。因此,您将找到一个名为

fish.mtxt
但不是一个名为

fish.txt
因为那个点

您可能想要grep/\.txt/,readdirDIR

但就我个人而言,我不想麻烦,只需要使用glob

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

还-启用“严格使用”;使用警告;。把它们看作是强制性的,直到你知道为什么要关掉它们。有很多场合,但如果你真的需要的话,你会知道它们是什么

您有一个多余的点:

@files = grep(/\..txt$/,readdir(DIR));
应该是:

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

结果文件是什么?代码中没有创建文件。更重要的是,您的代码根本无法工作。你刚才打了我一巴掌;在那里让它看起来像你真的有?对不起,我在cygwin中使用:perl~.get_list.pl>output.txt调用了.pl。这就是为什么它不工作的原因-它不工作,并且在STDERR上生成错误。是的,很抱歉,我删除了get strict,因为我正在尝试不同的方式编写代码。但是,输出文件仍然为空。谢谢:。非常感谢大家:
@files = grep(/\.txt$/,readdir(DIR));