使用Perl以相同的结尾打开并读取大量文件

时间:2013-10-01 13:34:36

标签: perl loops

我有一个名为ALLEQData的文件夹,其中我有100个以“.ndk”结尾的文件,例如'jan05.ndk','feb05.ndk'等。 使用Perl脚本我想打开以“.ndk”结尾的每个文件,读取该文件中包含的信息并将其放在输出文件中。 之前我只需打开一个文件并阅读它,我用过它:

my $filename = "jan76_dec10.ndk";
open FILEEQ, "<$filename"
    or die "can't open '$filename' for reading: $!";
close FILEEQ;
    $icount = 0;
for ($j=0; $j<@equ_file; $j++) .....etc

然后阅读信息。我可以读取信息并将其排序到我想要的输出中。

我不知道怎么做,是如何打开所有以“.ndk”结尾的文件,一个接一个地进行读取和排序,关闭该文件,然后转到下一个文件? / p>

希望这很清楚。

3 个答案:

答案 0 :(得分:7)

使用glob

my @filenames = glob('*.ndk');

for my $filename (@filenames) {
    open my $fh, '<', $filename
        or die "can't open '$filename' for reading: $!";
    # read/sort file

    close $fh;
}

答案 1 :(得分:3)

答案 2 :(得分:1)

您还可以从命令行中读取文件名:

while ($#ARGV > -1) {
    my $filename = shift;
    open my $fh, '<', $filename
        or die "can't open $filename for reading: $!";
    # ...
    close $fh;
}

然后使用通配符表达式调用perl脚本:

your-script.pl *.ndk