Hi,
I am trying to get a script to recurse through a directory structure. The script for the sake of simplicity will add a trailing 'z' to all files and directories. I have a problem with the recursion, is seems to go a couple of directories deep, but no further, I expect misuse of 'my ($Variable);' type statements...

first is the working non recursive script, which gets passed a directory, and then my recursion effort that doesn't work!

==WORKING EFFORT (not recursive)==
#!wperl use strict; use Win32; my ($DirItem); my ($Formatted); opendir(DIR, $ARGV[0]) || Fail; my @DirList = readdir(DIR); closedir DIR; foreach $DirItem (@DirList) { $Formatted = $DirItem . "z"; if ($DirItem ne "." && $DirItem ne "..") { rename($DirItem,$Formatted); } }
========================

==Non Working Recursive Effort==
#!wperl use strict; use Win32; sub Recurse; my ($DirItem); my ($Formatted); my ($PWD); Recurse ($ARGV[0]); sub Recurse { ($PWD) = @_; opendir(DIR, $PWD); my @DirList = readdir(DIR); closedir DIR; foreach $DirItem (@DirList) { $Formatted = $DirItem . "z"; if ( -d $DirItem &&$DirItem ne "." && $DirItem ne "..") { &Recurse ($PWD . "\\" . $DirItem); } if ($DirItem ne "." && $DirItem ne "..") { rename($DirItem,$Formatted); } } }
========================

Thanks for any help you can give! I went depth first so that only after a (sub)directory had been explorered did its name get changed, at least i believe that to be the case!

cheers
ant

In reply to Directory recursion on win32 by fourmi

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.