Why is eval evil? Blog: http://random8.zenunit.com/ Learn rails: http://sensei.zenunit.com/ On 07/02/2009, at 6:17 AM, badboy <badboy / heartofgold.co.cc> wrote: > Jonathan Wills schrieb: >> Trying to switch a project of mine from python to ruby. Love ruby so >> far, but I'm finding that the eval statement is a bit more >> difficult to >> use than python's exec statement. Here is one of the problems I'm >> having, RUBY_VERSION=1.9.1 >> a = 1 >> eval('a=2') >> puts a >> This will print out '2', as I want. However if I remove the first >> line, >> eval('a=2') >> puts a >> r.rb:2:in `<main>': undefined local variable or method `a' for >> main:Object (NameError) >> Now if in the first case eval can change a variable in its scope, why >> can't it also create a variable in that same scope? I may also not >> be >> totally clear on the way ruby handles scoping, which might be part of >> what I am having trouble understanding. >> Any help understanding the eval statement would be appreciated. I >> will >> probably have more questions about it, but I'll leave at this for >> now. >> thanks, >> -Jonathan > why do you want to use eval? > eval is evil and in most cases not needed in Ruby >