BuddhaNature has asked for the wisdom of the Perl Monks concerning the following question:

So I am writing a script to do some directory work, but keep ending up with an empty array when I try and print out the directory's contents:

my $base_directory = $ARGV[0]; opendir(B_DIR, "$base_directory") or die "Could not open base director +y $base_directory: $!\n"; my @client_directories = grep { $_ ne '.' and $_ ne '..' } readdir B_D +IR; close B_DIR; foreach my $client (@client_directories) { open(C_DIR, "$base_directory$client") or die "Could not open clien +t directory $base_directory/$client: $!\n"; my @config_directories = grep { $_ ne '.' and $_ ne '..' } readdir + C_DIR; close C_DIR; print "@config_directories\n";

I am sure I am missing something amazingly simple (and yes, the directories do have files and such in them, they are not empty), but I am just not finding anything in @config_directories.

Any help is greatly appreciated!

-Shane

Replies are listed 'Best First'.
Re: Confusion about an empty array
by kvale (Monsignor) on Apr 23, 2004 at 19:46 UTC
    There are two probelms with your open statement: it should be opendir and you are missing a path separator:
    foreach my $client (@client_directories) { opendir(C_DIR, "$base_directory/$client") or die "Could not open c +lient directory $base_directory/$client: $!\n"; my @config_directories = grep { $_ ne '.' and $_ ne '..' } readdir + C_DIR; close C_DIR; print "@config_directories\n";

    -Mark

      three problems: Should use closedir instead of close too.
Re: Confusion about an empty array
by cLive ;-) (Prior) on Apr 23, 2004 at 19:48 UTC

    you might want to print this and see what looks strange about it :)

    "$base_directory$client"

    cLive ;-)