%q
通常は、エスケープする必要がある記号文字が文字列に含まれる場合に、より一般的な形式の引用符を使う事が出来る。
文字列の戦闘に%をつけると、そのパーセント記号の後ろに続く文字ごとに定められた規則によって文字列が区切られる。
その文字は小文字のqと大文字のQ、そして大括弧{}と中括弧()を利用する。
※その他の文字も利用できる。
%qで始まる文字列はシングルクォートで囲まれた文字列と同等となる。
したがって、式の展開は行われず、バックスラッシュ記法も解釈されない。
区切り文字としては、改行を含む任意の文字を使う事が出来る。
先頭に左中括弧{や左括弧(を利用した場合は、対応する閉じ括弧で文字列を終了する。
それ以外の場合、文字列の初めと終わりに同じ文字を利用する。
%q(the notation #{delphi} will not be expanded.) %q{We can embed \\ and \} in this string.} %q/these characters are not special: " ' # () {}/
%Q
%Qで始まる文字列は、ダブルクォーテーションで囲まれた文字列と同等となる。
従って通常どおりに式の展開が行われる。
バックスラッシュ記法も解釈される。
区切り文字に関しては%qと同等となる。
%Q(We can embed tabs \t\t and newlines and so on.) %Q/Here, these characters are not special: () " '/ %Q("Hello, #{name}," I said to her.) %Q(He said, "She said, 'Hello.'")
qやQを利用しないパターン
qやQを利用せずに、%の直ぐ後ろに区切り文字を置く事も可能。
この場合、区切り文字にqやQを利用できないのは当然だが、r,w,xも利用できない。
このパターンの場合はダブルクォーテーションと同等の扱いとなる。
%(the variable delphi = #{delphi}) %/tab \t carriage return \r newline \n/ %{using a brace makes substitution hard: #\{beta\}} %<less-than greater-than will also work.> %[as will square brackets.]