From: Logan Capaldo Date: 2006-03-03T08:28:38+09:00 Subject: Re: gsub wrapper On Mar 2, 2006, at 6:09 PM, Hector wrote: > Help! > > How do I get $1, $2, and $3 to get interpolated in the following > snippet? > > string = 'This is a test of the emergency' > regexp = Regexp.new('(\W)+(\w\w)(\W)+') > replacement = '$1->$2<-$3' > user_wants_upcase=FALSE > > # Note: All variables above are set by the user of the program, so I > don't know > # what they will contain before runtime. > > string.gsub!(regexp) { > return_value = string # Here, how do I get $1, $2, and $3 to > interpolate? > > if (user_wants_uppercase) > return_value.upcase! || return_value > end > > return_value > } > > I want return_value to be -> 'This ->is<- a test ->of<- the emergency' > > Note: I know that I can get it to work with the non-block version of > gsub! but I need to use the block version. > > Thanks > > Hector > > -- > Posted via http://www.ruby-forum.com/. > assuming I understand your question: str = "#{$1}->#{$2}<-#{$3}" Alternatively: str = "#$1->#$2<-#$3"