At 10:18 AM 11/29/2006, Dan Jablonsky wrote:
>Hi all,
>I am trying to read only files in a directory; I need
>to jump over the dot files and any subdirectories.
>Seems like a simple thing, however with
>
>opendir(DIR, $dir) || die "can't opendir $dir: $!";
>foreach my $file (readdir DIR)
>{
>     next if (/^\./); # skip over dot files
>     print "file name is: $file\n";
>}
>
>I get . and .. and all subdirectories.
>
>with
>
>opendir(DIR, $dir) || die "can't opendir $dir: $!";
>foreach my $file (readdir DIR)
>{
>     next if -d $file); # skip over directories
>     print "file name is: $file\n";
>}
>
>I skip the dot files but I still get the
>subdirectories. Any idea how do I get only the plain
>files?

Problem with case 1, I think, is that "next if (/^\./);" compares to 
$_, not $file. Should be:

         foreach my $file (readdir(DIR)) {
                 next if ($file =~ /^\./);
                 }

Problem with case 2, I think, is that you need to provide a full path 
name to -d:

         foreach my $file (readdir(DIR)) {
                 next if (-d "$dir\\$file");
                 }

Keep in mind that I'm using \ as a separator, which should be / for Unix/Linux.
Also, -d $file might work if you know that the current directory is 
$dir, but it seems
safer to me to just give a full path name.

_______________________________________________
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to