Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: How to tell if a Directory is Empty

by zentara (Archbishop)
on Oct 29, 2011 at 10:47 UTC ( [id://934578]=note: print w/replies, xml ) Need Help??


in reply to How to tell if a Directory is Empty

Here is some similar code that various monks posted awhile back. There are a few varieties of an isEmpty() sub
#!/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 . +. }

I'm not really a human, but I play one on earth.
Old Perl Programmer Haiku ................... flash japh

Replies are listed 'Best First'.
Re^2: How to tell if a Directory is Empty
by ciderpunx (Vicar) on Nov 11, 2011 at 23:38 UTC
    return $count - 2; #maybe not the best way of removing . and . +.
    Perhaps use grep for that?
    sub isEmpty3 { return undef unless -d $_[0]; opendir my $dh, $_[0] or die $!; my $count = grep { ! /^\.{1,2}/ } readdir $dh; # strips out . and +.. return $count; }


Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://934578]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (4)
As of 2024-03-29 10:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found