Thanks Charles,

as a begginer I am having some problems to understand this compact code perl
let us write.

In my script I was testing  like this   if (IsEmptyDir($directory) = = 0)
and, when I included the new code you suggested,  it didn work. Then I
removed the = = 0 and started to work.

Could you explain what exactly this part of the  line  does.      grep !
/^\.{1,2}/

Is it a search over the readdir result set ?



Jair

----- Original Message ----- 
From: "Charles K. Clarkson" <[EMAIL PROTECTED]>
To: "'Jair Santos'" <[EMAIL PROTECTED]>
Sent: Monday, June 16, 2003 1:36 PM
Subject: RE: Is empty directory?


> Jair Santos [mailto:[EMAIL PROTECTED] wrote:
> :
> : I am using the following snippet of code to
> : check if the directory is empty : and it is
> : working.
> :
> : sub IsEmptyDir {
> :
> :     my ( $directory) = @_ ;
>
>     You don't need that line.
>
> :     return undef unless -d $_[0];
> :     opendir my $dh, $_[0] or die $!;
> :     my $count = () = readdir $dh;
> :     return $count - 2;
> : }
>
>     As Rob Dixon pointed out, this is less
> than the safest algorithm. Instead of
> decrementing the count, the "." and ".."
> files should be specifically excluded. I
> would recommend this modification.
>
> sub IsEmptyDir {
>     return undef unless -d $_[0];
>     opendir my $dh, $_[0] or die $!;
>     my $count = () = grep ! /^\.{1,2}/, readdir $dh;
>     return $count ? 0 : 1;
> }
>
>     This also changes the logic to return
> true when $count is 0. Which would allow:
>
> print "Empty Directory\n" if IsEmptyDir( $foo_dir );
>
>
>
> HTH,
>
> Charles K. Clarkson
> -- 
> Head Bottle Washer,
> Clarkson Energy Homes, Inc.
> Mobile Home Specialists
> 254 968-8328
>
>
>
>


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to