mjn wrote: > I am looking to walk a directory structure, look at all the files ending > in .html, and examine them for a bit of text and replace that text if its > found. > > Awhile ago someone was kind enough to answer me for doing something like > this if all of the files are in a certain directory but I haven't found a > way to do this recursively. > > I tried this: > > perl -pi.bak -e 's/bob/dick/' testing/. > > But that doesn't seem to work. If this command would work like I > think it should and it could be made only to affect a certain file > extension, that would rule. > > So is there something I am missing or should I start writing something a > little bigger for the job? > I'm sure there *is* a way to write a one-liner to do this job, but I'm not convinced that you should attempt it. To recurse into directories, I use something like: sub checkdirs(){ #sorry, I don't know argument prototyping my $dir = $_[0]; #first argument passed in opendir(DH, "$dir") or die "$0: failed to open handle for $dir: $!\n"; my @listing = readdir(DH); closedir(DH); foreach my $file (@listing){ if((!-d $file) && ($file ~= /*\.html^/){ open(FH, "$file") or die $0: failed to open $file for read/write: $!\n"; while(<FH>){ $_ ~= s/dick/bob/g; } close(FH); } elsif ((!-d $file) || ($file ~= /$\.^/) || ($file ~= /$\.\.^/)) { #optional debugging output would go here } else { checkdirs($file); } } I apologize for problems with indentation; Mozilla isn't being very helpful. :) You might want some sort of debugging in the 'elsif' clause; the only things that should fall through to it are '.', '..', and anything that doesn't end in '.html', but isn't a directory. Hope that's helpful to you! -- <----------------------------------------------------------------------> Chris H. Bidler cbidler at talkware.net Random Task Handler, Sysadmin Group Universal Talkware Corp. "In any event, is a O^(log N) search that returns the wrong answer really better than an O^N search that returns the right answer?" <---------------------------------------------------------------------->