Can anyone tell me why I ran out of memory when I ran this code. It is a simple directory search that starts off where you are and searched to the end of that directory. However, when I ran it, it gave me an illegal operation error and said that I was out of memory. I believe the problem is in the @ARGV statement in the first sub function. Any clues?
#!/usr/bin/perl -ws use strict; use Cwd; my $mode; &op; &scandir("C:/mydocu~1"); sub op { if (defined (@ARGV) $ARGV[0]=~/-all/) { $mode="all"; }else{ $mode=""; } } sub scandir { my ($workdir) = &scandir; my ($startdir) = &cwd; chdir($workdir) || die "Unable to change to $workdir: $!\n"; opendir(DIR, ".") || die "Unable to open $workdir: $!\n"; my @files = readdir(DIR) || die "Unable to read $workdir: $!\n"; closedir(DIR) || die "Unable to close $workdir: $!\n"; foreach my $file (@files) { next if ($file eq "."); next if ($file eq ".."); if ($mode eq "all") { if (-d $file) { &scandir; next; } if (-f $file) { if($file =~ m/\.\d+\w+\-\d+\wm$/i || $file =~ m/\.log$/i) { unlink($file) || warn "Unable to delete: $file: $!\n"; }else{ print "No files to delete!\n"; } } } elsif ($mode eq "") { if(-d $file) { &scandir; next; } if (-f $file) { if($file =~ m/\.\d+\w+\-\d+\wm$/i) { unlink($file) || warn "Unable to delete: $workdir\/$fi +le: $!\n"; }else{ print "No files to delete!\n"; } } } chdir($startdir) || die "Unable to change to $startdir: $!\n"; } } &scandir(".");
Thanks in advance curtisb -- "Be careful what you wish for, it may come back and bit you in the ass!"

In reply to Yet another problem with recursive code by curtisb

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.