Hi, I ran the following on a WinXP/SP2 machine: F:\>ruby --version ruby 1.8.2 (2004-12-25) [i386-mswin32] F:\>ruby -e "puts %q[\a\b\c]" \a\b\c F:\>ruby -e "puts %q[\a\b\c\]" -e:1: unterminated string meets end of file F:\> It seems to me the last \ shouldn't need to be escaped as \\, though that does work. What's up?
on 2005-11-20 01:47
on 2005-11-20 02:52
On 11/19/05, Richard Lionheart <NoOne@nowhere.net> wrote: > F:\>ruby -e "puts %q[\a\b\c\]" > -e:1: unterminated string meets end of file > > F:\> > > It seems to me the last \ shouldn't need to be escaped as \\, though that > does work. What's up? %q[foo] is equivalent to the single-quoted string literal 'foo'. In the same way, the only escapable characters are backslash and the character that ends the literal: 'Mark\'s string' %q[square (\]) bracket] A literal backslash in a single quoted string only needs to be escaped where it might be confused as escaping the final quoting character, like in your example. HTH, Mark
on 2005-11-20 03:04
In a quoted string, a \cx is an escape for ctrl-x, so the \c\] is interpreted as ctrl-] as the \] is an escape for the bracket in the quoted string. Since there is no close bracket you get an error. Try this... puts %q[\a\b\\c\\] And you get \a\b\c\ _Kevin
on 2005-11-20 11:31
Thanks. I forgot about viewing %q?....? as a generalized single-quoted string, as one of you said, and as Fulton said in "The Ruby Way". Thanks, guys.