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

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..

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)

Replies are listed 'Best First'.
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);


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

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://76829]
[Your Mother]: :P
[ambrus]: YourMother: my brother told me their cat wants to climb into the dishwasher if they leave the door open. Not when the dishwasher is started, but after it's done washing, because it's still warm and cats like warm.

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (8)
As of 2017-12-18 15:30 GMT
Find Nodes?
    Voting Booth?
    What programming language do you hate the most?

    Results (491 votes). Check out past polls.