\ is an escape character for strings. For example, using

a = 'Today is the day, I'm going to New Jersey'

is interpreted as

a = 'Today is the day, I'    m going to New Jersey    '

This tosses an error because the interpreter assumes the apostrophe in I'm 
is the end of the string. The \ escapes that apostrophe so that it's merely 
text in the string, not a Ruby operator. The above line would also error out 
because 'm', 'going', 'to', 'new', and 'jersey' are unknown methods, and 
then also because the last ' was read as the beginning of another string, 
causing the string to run to the end of the file and the interpreter yelling 
at you because the string wasn't terminated. (In other contexts it would run 
until the next occurrence of the ' character, tossing other errors.)

Same thing happens with the backslash.

\ = Escape character
\\ = \ in a string

Example:

irb(main):001:0> puts "c:\documents"
c:documents
=> nil

Here the \ is merely an escape character and thus does nothing since there's 
no special characters after it. On the other hand:

irb(main):002:0> puts "c:\\documents"
c:\documents
=> nil

The \\ becomes \ because it used the first backslash as the escape character 
for the second backslash.

I hope that helps.

 - jayce

--------------------------------------------------
From: "James Byrne" <byrnejb / harte-lyne.ca>
Sent: Thursday, February 05, 2009 12:50 PM
Newsgroups: comp.lang.ruby
To: "ruby-talk ML" <ruby-talk / ruby-lang.org>
Subject: irb and single quoted strings

> This is the problem:
>
> irb(main):002:0> x = '--rails --exclude something_is_not_right
> \/usr\/lib,test\/lib'
> => "--rails --exclude something_is_not_right \\/usr\\/lib,test\\/lib"
>
> irb(main):004:0> p x
> "--rails --exclude something_is_not_right \\/usr\\/lib,test\\/lib"
>
> How do I get a literal string like /usr\/lib,test\/lib into a variable?
> Where are these extra '\' artifacts coming from?
> -- 
> Posted via http://www.ruby-forum.com/.
>
>