Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: Getting a simple directory listing

by tinman (Curate)
on May 01, 2001 at 04:12 UTC ( #76829=note: print w/ replies, xml ) Need Help??


in reply to Getting a simple directory listing

Your code works for me, after I made a simple substitution of opendir(TEXTFILES, ".") || die "Couldn't open the text file directory: $!"; instead of trying to open directory "desktop".. You need to change to the "desktop" directory, because you're doing the test on the current directory..
HTH

The full code that worked for me follows:

use Cwd; print "Current dir is: ", cwd, "\n"; local $_; opendir(TEXTFILES, "c:\\CA_LIC") || die "Couldn't open the text file d +irectory: $!"; @data=readdir(TEXTFILES); foreach (@data) { print $_, "\n" if(-d "C:\\CA_LIC\\$_ "); } closedir(TEXTFILES);

Update:ZZamboni types faster than I do :o), obviously, he's said what I've tried to say too, better, in fact :o)


Comment on Re: Getting a simple directory listing
Select or Download Code
Re: Re: Getting a simple directory listing
by Stamp_Guy (Monk) on May 01, 2001 at 04:16 UTC
    Ok, ZZamboni, I tried that and it works. I am just trying to get an array with all the subdirectories of the current dir, and this doesn't work:
    use Cwd; print "Current dir is: ", cwd, "\n"; opendir(TEXTFILES, "desktop") || die "Couldn't open the text file dire +ctory: $!"; @data=readdir(TEXTFILES); foreach (@data) { push (@dir) if (-d "./desktop/$_"); } closedir(TEXTFILES); print @dir; # This line is just here to make sure it worked, which it +currently doesn't.
    Update: Is there a more efficient way to do this? This seems a bit bulky. If someone could show me a better way (and explain it for this newbie) to do this, I'd really appreciate it.
      push does not use $_ as an implicit argument, so when you do push(@dir) you are not pushing anything into @dir. You have to do:
      push(@dir, $_) if (-d "./desktop/$_");
      Although I would substitute that whole block (the readdir and the foreach) by:
      @dir = grep { -d "./desktop/$_" } readdir(TEXTFILES);
      :-)

      --ZZamboni

        Bingo, that worked. Is there a way I can strip out the . and .. directories?

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (7)
As of 2014-09-01 19:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite cookbook is:










    Results (17 votes), past polls