新井です。 >>> From: Koji Arai <JCA02266 / nifty.ne.jp> >>> Date: 21 Feb 1999 00:47:34 +0900 >>> Subject: [ruby-dev:5412] Re: #{\n}\\ in heredoc > 新井です。 > 1.3.1-990215 を元に 1.2.3用のパッチを作ってみました(あってますか?)。 ダメでした。 以下のスクリプトがうまくいかない。 print <<END a\\ #{ }\\ b\\ c\\ END 以下の修正でどうでしょ? (1.2.3へのパッチです) # いつも、メールを送る前にhookでTABを消してたんですが # マズかったですね。今回TAB付き。
--- parse.y.orig Tue Feb 9 12:29:23 1999 +++ parse.y Sun Feb 21 06:09:50 1999 @@ -2229,14 +2229,15 @@ return 0; } sourceline++; - if (strncmp(eos, RSTRING(line)->ptr, len) == 0 && - (RSTRING(line)->ptr[len] == '\n' || - RSTRING(line)->ptr[len] == '\r')) { - break; - } lex_pbeg = lex_p = RSTRING(line)->ptr; lex_pend = lex_p + RSTRING(line)->len; + retry: + if (strncmp(eos, lex_p, len) == 0 && + (lex_p[len] == '\n' || lex_p[len] == '\r')) { + break; + } + switch (parse_string(term, '\n', '\n')) { case tSTRING: case tXSTRING: @@ -2260,6 +2261,9 @@ case 0: goto error; + } + if (lex_p != lex_pend) { + goto retry; } } free(eos);