Hi -- On Thu, 5 Jul 2007, Ivan V. wrote: > Hi, > > I'm trying to create a Regexp object by calling eval like this: > > def eval_to_regexp(o) > if o.is_a?(Regexp) > o > elsif o.is_a?(String) > o = o[5..o.size] if o[0..4] == 'eval:' > eval("/#{o}/") > else > eval("/#{o.to_s}/") > end > end > > e = eval_to_regexp("eval:some_function() + '^'") > > Suppose some_function() returns the string '/home/test' > > And then I use it to test a match as follows: > > '/home/test' =~ e # should return 0 > '/home/test/somethingelse' =~ e # should return nil (because of the '^' > above) > > I also tried using /#{o}/ directly instead of the eval, but it doesn't > work either :( I think you might have better luck with Regexp.new: e = Regexp.new("^#{some_function}") or something like that. David -- * Books: RAILS ROUTING (new! http://www.awprofessional.com/title/0321509242) RUBY FOR RAILS (http://www.manning.com/black) * Ruby/Rails training & consulting: Ruby Power and Light, LLC (http://www.rubypal.com)