From: Kirk Haines Date: 2004-04-21T23:33:02+09:00 Subject: Re: binding - how to get current script? On Wed, 21 Apr 2004, Kristof Bastiaensen wrote: > There is :-) > You can use Kernel#binding to get the current binding, > and pass it to eval: > > irb(main):001:0> eval("name = 'Alice'", binding()) > => "Alice" > irb(main):002:0> name > => "Alice" Try it in a program instead of in irb. That fails. enigodev % cat t.rb #!/usr/bin/ruby eval('name = "alice"',binding) puts name enigodev % ./t.rb ./t.rb:4: undefined local variable or method `name' for main:Object (NameError) enigodev % If one replaces name with @name, then it works. There is probably a logical explanation for why local variables behave in this way within an eval, but I do find it surprising, coming from Perl. Kirk Haines