Here's one way to hook into irb's eval loop:

module IRB
  class Context
    def evaluate(line, line_no)
      value = @workspace.evaluate(self, line, irb_path, line_no)
      puts "value = #{value}" # do something with returned value here
      value
    end
  end
end

Regards,

Sean