From: Tanaka Akira Date: 2009-03-17T14:17:55+09:00 Subject: [ruby-dev:38174] Re: [Bug #1297] Pathname#subの挙動について In article <49bf2ac7ef532_84c7a1ade0152f8@redmine.ruby-lang.org>, Shintaro KAKUTANI writes: > @original_filename = path.sub(/^.*#{File::SEPARATOR}([^#{File::SEPARATOR}]+)$/) { $1 } > > ここのpathがPathnameのインスタンスだとマッチしません(Stringだとマッチする)。 マッチはするけれど、ブロックで $1 が nil というのが実際ですね。 > 使う側の気持ちとしては、Pathname#subではファイルパスの文字列へのsubと同じ挙動であって欲しいと思いました。 String#sub のように呼出元の $~ を設定するのは Ruby レベルで はできないんですよねぇ。 渡されたブロックの binding の $~ を設定するのは可能ではあり ます。 (eval にブロックの binding を渡して $~ を書き換える) ブロックを渡されないときは無理ですが。 -- [田中 哲][たなか あきら][Tanaka Akira]