Hello Mark, Do you need the second \( ? The replacement part of the s/// substitution is just a string scalar, not a regular expression. You do not need to escape the (. >When I try putting in: > >Files to change>*.c >Ignore case in the files? n >String to look for>\(getByte >String to insert>\(MLF_getByte > >I get: > >Reading /tmp_mnt/disk4/mark/gr/fileio.c...please wait. >new: theWordL = (USHORT) \(MLF_getByte() & 0xff); >new: theWordL = ((USHORT) \(MLF_getByte() & 0xff)) | (theWordL ><< 0x08); >As you can see - it puts in the backslash before the >parenthesis. Various combinations of these two result in >either just the error or the same as the above. > >Total number of changes made to the files: 0 > > if( $opt_i =~ /y/i ){ > $theListing[$i] =~ s/$opt_o/$opt_n/ig; > } > else { > $theListing[$i] =~ s/$opt_o/$opt_n/g; > } You may want to change some of the prompts to reflect what is needed: >Files to change>*.c >Ignore case in the files(y/n)?>n >String (or regular expression) to look for>\(getByte >String to insert>(MLF_getByte takeshi yano -- email: mailto:takyano@pubzone.com ***** Want to unsubscribe from this list? ***** Send mail with body "unsubscribe" to mac-perl-request@iis.ee.ethz.ch