From: "W. Kent Starr" Date: 2001-05-16T22:07:09+09:00 Subject: [ruby-talk:15269] Re: Bug or feature? eval("x=5") On Wednesday 16 May 2001 02:11, Joel VanderWerf wrote: > See p.528 of the pickaxe book (in appendix B). > > I guess the difference is that irb parses line by line, but when you > send a file to ruby it parses the whole thing first. In the latter case, > the parser does not know that the variable is going to be defined when > execution reaches that point. Re: [ruby-talk:15244] Re: Bug or feature? eval("x=5") Date: Wed, 16 May 2001 07:57:40 -0400 From: W. Kent Starr To: ruby-talk@ruby-lang.org Reply to: elderburn@mindspring.com On Wednesday 16 May 2001 02:11, Joel VanderWerf wrote: >�See p.528 of the pickaxe book (in appendix B). > >�I guess the difference is that irb parses line by line, but when you >�send a file to ruby it parses the whole thing first. In the latter case, >�the parser does not know that the variable is going to be defined when >�execution reaches that point. Makes sense :-) FWIW puts eval("x=5") yields expected result (5) in irb, ruby -e and ruby test.rb, while eval ("x=5"); puts x fails in ruby -e and test.rb. puts, of course, forces the eval("x=5") expression to evaluate. y = eval("x=5"); puts y plays same as puts eval("x=5") I guess this is more feature than bug, as it forces variable declaration (in some form) in file before I send to you :-) Also, ruby -w test.rb gives warning: eval (...) interpreted as method call, even though it correctly evaluates both the puts and y = expressions. Regards, Kent Starr elderburn@mindsp