On Sep 6, 2006, at 2:17 PM, James Edward Gray II wrote: > On Sep 6, 2006, at 12:52 PM, Gareth Adams wrote: > >> Morton Goldberg <m_goldberg <at> ameritech.net> writes: >> >>> >>> On Sep 6, 2006, at 9:02 AM, Anil Wadghule wrote: >>> >>>> #code >>>> a = "puts 'I like Ruby'" >>>> b = eval(a) >>>> puts b >> >>> Exactly what are you trying to capture into a string? >> >> I would guess that the intention is to capture STDOUT and get b == >> 'I like Ruby' > > >> require "stringio" > => true > >> a = "puts 'I like Ruby'" > => "puts 'I like Ruby'" > >> b = eval("begin $stdout = StringIO.new; #{a}; $stdout.string; > ensure $stdout = STDOUT end") > => "I like Ruby\n" > > Hope that helps. > > James Edward Gray II > > As an alternative (not exactly an equivalent one:) % cat piper.rb a = 'puts "I like ruby"' s = '' IO.popen("ruby", "w+") do |f| f.write a f.close_write s = f.read end puts s % ruby piper.rb I like ruby