error "called to early to check prototype" using recursive function

From: S.A. Birl (sbirl+PERL_at_concept.temple.edu)
Date: 01/28/05


Date: Fri, 28 Jan 2005 16:21:55 -0500 (EST)
To: beginners@perl.org

2 problems, maybe related.

1) My recursive program is generating a "called to early to check
   prototype" error. Ive Googled for answers but cannot find a solution

2) When this executes, it traverses 8 directories in F:\\Inetpub\\Develop
   then stops and traverses 8 directories in F:\\Inetpub\\Publish

   I cannot seem to figure out why it's giving up so early when there's
   more than 8 directories in each folder.

Thanks
 Birl

Please do not CC me responses to my own posts.
I'll read the responses on the list.

use strict;
use warnings;

my $indent=0;
my $ERRORS=0;

my $OUTPUT="D:\\Logs\\IIS\\unlock_Read-Only_files.log";

sub OpenDirectory($)
{
        $indent++;

        my $counter=0;
        my $Directory=shift;
        my $FILE;
        my $LongDirectoryName="";

        for ($counter=1; $counter < $indent; $counter++) { printf(" "); }

        if ( (defined $LongDirectoryName) && ($LongDirectoryName !~ /^$/) )
        {
                $LongDirectoryName=sprintf("%s\\%s", $LongDirectoryName, $Directory);
        }
        else
        {
                $LongDirectoryName=$Directory;
        }

        printf(Loghandle "Opening directory \"%s\": ", $LongDirectoryName);

        if ( opendir(DIRhandle, "$LongDirectoryName") )
        {
                printf(Loghandle "success\n");

                while ( defined ($FILE = readdir(DIRhandle)) )
                {
                        for ($counter=0; $counter < $indent; $counter++) { printf(Loghandle " "); }

                        if ($FILE =~ /\.\.?$/)
                        {
                                printf(Loghandle "skipping \"%s\"\n", $FILE);
                        }
                        else
                        {
                                if (-f "$LongDirectoryName\\$FILE")
                                {
                                        #printf(Loghandle "\"%s\" is a file.\n", $FILE);
                                        if ( system("attrib -R $LongDirectoryName\\$FILE") )
                                        {
                                                for ($counter=0; $counter < $indent; $counter++) { printf(Loghandle " "); }
                                                printf(Loghandle "FAILED: file attrib $!\n");
                                        }

                                }
                                elsif (-d "$LongDirectoryName\\$FILE")
                                {
                                        #printf(Loghandle "\"%s\" is a directory.\n", $FILE);
                                        if ( system("attrib -R $LongDirectoryName\\$FILE") )
                                        {
                                                for ($counter=0; $counter < $indent; $counter++) { printf(Loghandle " "); }
                                                printf(Loghandle "FAILED: folder attrib $!\n");
                                        }

                                        OpenDirectory("$LongDirectoryName\\$FILE");
                                }
                                else
                                {
                                        printf(Loghandle "\"%s\" is an unknown.\n", $FILE);
                                }
                        }

                        printf("Analyzed: \"%s\\%s\"\n", $LongDirectoryName, $FILE);

                }
        }
        else
        {
                printf(Loghandle "FAILED: $!\n");
        }

        closedir(DIRhandle);
        $indent--;
}

if (! open(Loghandle, ">$OUTPUT") )
{
        die "Could not open \"$OUTPUT\" for writing: $!";
}

OpenDirectory("F:\\Inetpub\\Develop");
OpenDirectory("F:\\Inetpub\\Publish");