Angus Mezick wrote: > perl -pi.bak -e 's/GET_FUN/GET_OBJ_FUN/g' *.[ch] > --Angus > > Roger Smith <sexycoder@HOTMAIL.COM> on 05/14/99 01:40:49 AM > > I looking for a way to search through my source code and replace every > instance of "GET_FUN" with "GET_OBJ_FUN". I suppose grep might have > something to do with it. Thanks in advance ;) > > -Roger > <bobbit> > > +------------------------------------------------------------+ > | Ensure that you have read the CircleMUD Mailing List FAQ: | > | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | > +------------------------------------------------------------+ .#!/usr/bin/perl if($#ARGV < 0){ print ("Enter string to search for:\n "); $search = <STDIN>; print ("\nEnter string to replace it with:\n "); $replace = <STDIN>; print ("\nEnter directory path to search:\n "); $dirpath = <STDIN>; $doit[0] = "$search^^$replace^^$dirpath"; }else{ $filename = $ARGV[0]; if($filename !~ /\w/){ print ("You must specify a configuration file.\n"); print ("If you wish to enter parameters manually, don't put arguments.\n"); exit(1); } $dirpath = $ARGV[1]; if($filename !~ /\./){$filename .= '.rep';} $filename =~ s/\s//g; open(FIL, "<$filename") || die ("Can't open $filename\n"); @doit = <FIL>; close(FIL); } print ("\nStarting search and replace...(a LaFay production)\n"); $count = 0; loopz: foreach $line (@doit){ $line =~ s/(\n|\r|\t)//g; ($search,$replace,$newdirpath) = split(/\^\^/,$line); if($newdirpath ne ""){$dirpath = $newdirpath;} if($dirpath eq ""){$dirpath = '.';} $dirpath =~ s/\s//g; if($dirpath !~ /(\/)$/){$dirpath .= '/';} print ("Opening $dirpath\n"); opendir(DIR, "$dirpath") || next; print ("Okay\n"); @files = readdir(DIR); closedir(DIR); @files = grep(!/^(\.|\.\.)$/,@files); @files = grep(/(\.h|\.c)$/,@files); loopy: foreach $file (@files){ if(!(-f "$dirpath$file")){ if(-d "$dirpath$file"){ $doit[$#doit + 1] = "$search^^$replace^^$dirpath$file"; } next; } open(FIL,"<$dirpath$file") || next; @data = (); @data = <FIL>; close(FIL); loopx: if($num = grep(/$search/,@data)){ foreach $line (@data){ if($line =~ s/$search/$replace/gi){$count++;} } open(FIL,">$dirpath$file") || next; seek(FIL,0,0); print FIL @data; close(FIL); } #end loopx } #end loopy } #end loopz print ("\nDONE! Total matches replaced: $count\n"); Nocturnal -- --------------- Codito, ergo sum - "I code, therefore I am" -------------------- http://birk113.studby.uio.no/~ronnyi ronnyi@ifi.uio.no ---------------- In a world without fences, who need gates? -------------------- +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST