in reply to escaping the backslash

chromatic is right, you should use the quote() or even better the placeholders. This is just to explain why what you tried didn't work.

The replacement string in a s/// is basicaly just a doublequoted string. In such a string if you want to include a literal backslash you have to escape it:

print "A backslash \\ is here\n";
In your case you need two literal backslashes so you have to enter four in the replacement.

Second, the list of characters that need to be escaped in a regular expression is even longer than in a doublequoted string. What they both have in common is that you have to type two backslashes if you want to get a single literal backslash. So the line should look like this:

s/\\/\\\\/g;
or better
s{\\}{\\\\}g ;
(The second version is a bit more readable.)

Jenda
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
   -- Rick Osborne

Edit by castaway: Closed small tag in signature

Replies are listed 'Best First'.
Re: Re: escaping the backslash
by joedoc (Initiate) on Apr 29, 2003 at 21:36 UTC
    Jenda, chromatic;
    Thanks for the advice. I can see in Jenda's explanation why the substitution wasn't working. I took a crack at the quote() method, but it turns out the text being dumped on the form has newlines, which is another bag of worms for quote(). ;-)
    Since it's time to go home, I'll take a shot with the placeholders tomorrow. Thanks for the great assistance.
    joedoc
      Your newline problem is probably related to the output record separator. You can just assign to it to change the default behaviour.

      $, - output field separator (default: comma)
      $\ - output record separator (default: newline)
      $" - list separator (default: space)
        All:
        I used the binding parameters feature of DBI as suggested, and that solution works the best. The problem with other solutions was the nature of the data. These are specially-prepared Naval messages that require that the formatting (lines, etc) be exactly as created. The editors they use for these things can also vary as to how they add CRs and LFs, so my goal was to just have them paste the raw copied text to the web form and have the script dump it to the database as-is. Binding worked perfectly.
        Thanks for all the great tips and advice. I am very grateful.