David Arnold <[EMAIL PROTECTED]> wrote: : Suppose I have a number of lines in a latex file like this: : : \backans{If $x=y^{2n}$ and $z=y^{3n}_{11}$, then we can : substitute to find a solution.} : : I'd like to scan the file and replace all of these with : this format: : : \begin{answer} : If $x=y^{2n}$ and $z=y^{3n}_{11}$, then we can substitute : to find a solution. : \end{answer} : : I'm looking for suggestions as to how to make this change : with my perl script. I am puzzled by the use of nested : braces and how I can be sure I've got everything between : the opening and closing brace.
As long as the lines do not wrap, you don't need to worry about the nesting. Perl regexes are greedy by default. So '.+' will try to suck in the longest match possible. Which is just what you want. while ( <DATA> ) { printf "\\begin{answer}\n%s\n\\end{answer}\n", $1 if /^\\backans{(.+)}/; } __END__ \backans{If $x=y^{2n}$ and $z=y^{3n}_{11}$, then we can ...} \backans{If $x=y^{2n}$ and $z=y^{3n}_{11}$, then we can ...} \backans{If $x=y^{2n}$ and $z=y^{3n}_{11}$, then we can ...} \backans{If $x=y^{2n}$ and $z=y^{3n}_{11}$, then we can ...} HTH, Charles K. Clarkson -- Mobile Homes Specialist 254 968-8328 -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>