O.K. Monks, I wrote a script that uses Find::File to recursively parse a directory and change parts of the files it finds using a reg/ex. I got some strange (at least to me) results from one particular substitution:
The guts of this substitution look like this:
$matchtext = "http://www.foo.bar/somepage.pl?"; $substitutetext = "http://www.new.site/somenewpage?"; s/$matchtext/$substitutetext/;
This code was giving me this result:
http://www.foo.bar/somepage.pl? was becoming
http://www.new.site/somenewpage.pl?? #note: 2 "?"'s
Oh yeah, I thought, i forgot about the "?" modifier for reg/ex. So I reran my script with this...
$matchtext = "http://www.new.site/somenewpage.pl\?\?"; $substitutetext = "http://www.new.site/somenewpage.pl\?"; s/$matchtext/$substitutetext/;
...thinking that I would simply escape out the "?" character.
After running this script, the orignal string:
http://www.new.site/somenewpage.pl?
turned into:
http://www.new.site/somenewpage.pl??l??
So, I am not sure why I am getting foo.pl??l?? after the regex substitution. Also, any suggestions on how to change my blah.pl??l?? back into blah.pl?
Thanks Monks!
In reply to Regular Expressions and Question Marks by mr_dont
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |