Perl: Checking a directory for emptiness

If you need to check a directory for emptiness within a Perl script, it's best to use a set of Perl's builtin functions. Once a directory handle is obtained by calling opendir, iterate over the directory's entries using readdir and be sure to ignore the reference-only entries ("." & ".."). If any other entry is found, the directory in question is not empty.

The following subroutine should work an any Unix-like system:

sub is_empty_dir
    my $path = shift();
    my $rv   = 1;

    opendir DIR, $path or die "$path: $!\n";

    while (my $entry = readdir(DIR))
        next if ($entry eq "." or $entry eq "..");

        # Entry found beneath $path, directory is not empty
        $rv = 0;



    return $rv;

Download this subroutine.