#!/usr/bin/perl # Returns: # 1 - empty # 0 - not empty # -1 - doesn't exist # Definition of "empty" -- no files/folders/links except . and .. sub isEmpty{ my ($dir) = @_; my $file; if (opendir my $dfh, $dir){ while (defined($file = readdir $dfh)){ next if $file eq '.' or $file eq '..'; closedir $dhf; return 0; } closedir $dfh; return 1; }else{ return -1; } } ####### sub isEmpty1 { opendir(DIR,shift) or die $!; my @files = grep { !m/\A\.{1,2}\Z/} readdir(DIR); closedir(DIR); @files ? 0 : 1; } print isEmpty1('./dir') ? "empty\n" : "not empty\n"; ################# sub isEmpty2 { return undef unless -d $_[0]; opendir my $dh, $_[0] or die $!; my $count = () = readdir $dh; # gets count thru () return $count - 2; #maybe not the best way of removing . and .. }