From: matz@... (Yukihiro Matsumoto) Date: 2002-02-19T13:21:31+09:00 Subject: Re: Problems with Ruby in C Hi, In message "Problems with Ruby in C" on 02/02/18, Joakim Andersson writes: |The Ruby program does what is expected but the C program doesn't, so I'm |hoping that some kind soul could tell me what I'm doing wrong. Ah, first of all, local variables does not belong to any object, so that in the following code: |class Context | def execute(str) | instance_eval(str) | end |end | |a = Context.new() |a.execute("a = 5 ; puts a") the assignemnt to the variable a is done in the scope of the execute method, whic vaporized every time execute called. On the other hand, |static VALUE cContext_execute(VALUE self, VALUE str) |{ | return rb_funcall(self, rb_intern("instance_eval"), 1, str); |} this case, the assignment is done at the toplevel scope, which is used again and again. That's the difference. matz.