3

我有一个名为 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'结尾的所有文件,进行读取和排序,关闭该文件,然后移动到下一个文件?

希望这足够清楚。

4

3 回答 3

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;
}
于 2013-10-01T13:36:03.327 回答
3

看看Perl 的 globbing 机制

于 2013-10-01T13:36:12.773 回答
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
于 2013-10-01T15:54:58.740 回答