From: Robert Klemme Date: 2003-04-08T17:33:14+09:00 Subject: Re: a question about regexp I'd say it should read def mygrep( exp ) ar = [ "element1", "element2" ] ar.grep( exp ) { |e| # works... print "grep: #$&\n" yield e } end mygrep( /(.*)/ ) { |e| # does work now print "mygrep: #{e}\n" } I would not have the block rely on some global var being set. robert "Ben Thomas" schrieb im Newsbeitrag news:_4hka.1431$u13.938880113@news.nnrp.ca... > Hi, > > I'm trying to make the following code works but I don't know how... > > ----------------------------------------------------- > def mygrep( exp ) > ar = [ "element1", "element2" ] > ar.grep( exp ) { |e| > # works... > print "grep: #$&\n" > yield e > } > end > > mygrep( /(.*)/ ) { |e| > # doesn't work... > print "mygrep: #$&\n" > } > > ----------------------------------------------------- > > Displaying $& in the inner loop of grep works fine, but when it enter my own > block, $& is put back to nil. Is there a way to keep the value of $& (and > all others $1...)? > > Thankx, > Ben. > >