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
>