On Mar 17, 2006, at 5:49 PM, PJ Hyett wrote: > So I've tracked this down: > __FILE__ is the name of the current source file > $0 at the top level is the name of the top-level program being > executed > > But I'm still confused as to what this if statement is accomplishing? > It's obviously useful for something since it's used quite often. Does > this pertain to when a script is called from another script? > > Thanks, > PJ It is used when you want to run something when the file is executed directly. Some put tests in their code like this, I think this is bad form. Tests belong in a separate file. File a.rb --------- class Foo end if __FILE__ == $PROGRAM_NAME # [1] puts "Testing out class Foo" # ... end File b.rb --------- require 'a' puts "The if block in a.rb is not executed" __END__ $ruby a.rb Testing out class Foo $ruby b.rb The if block in a.rb is not executed [1] $PROGRAM_NAME is the less cryptic name for $0 -- Daniel