in reply to Re: how to get total numbers of files in a directory?
in thread how to get total numbers of files in a directory?

I'd have written that as
opendir(DIR, "/home/a") || die "can't open dir: $!"; my $count = grep(/\.txt$/, readdir(DIR)); closedir(DIR); print "There are $count .txt files\n";
assuming that the only purpose is to get a count of matching files.

Michael

Replies are listed 'Best First'.
Re: how to get total numbers of files in a directory?
by Abigail-II (Bishop) on Dec 09, 2003 at 16:07 UTC
    That has the disadvantage of potentially using a lot of memory if there are many files in the directory (the globbing solutions, and solutions that use readdir in list context all suffer from this).

    I would use something like:

    my $cnt = 0; local $_; chdir "/home/a" or die "chdir: $!"; opendir my $dh => "." or die "opendir: $!"; -f && /\.txt$/ && $cnt ++ while defined ($_ = readdir $dh); closedir $dh;

    Abigail

      or a simple shell script? find . -maxdepth 1 -name '*.*' | wc -l