On Dec 8, 2006, at 14:16 , Andreas S wrote: > Can anybody help me understanding the relation between Kernel#puts, > STDOUT and $stdout? > > I thought 'puts' is equivalent to '$stdout.puts'. Why 'puts' > doesn't give same result as 'STDOUT.puts'? > > class << STDOUT > def puts(*args) > args[0] = "I say " + args[0] unless args.empty? > super(args) > end > end > > puts "hello" This calls $stdout.write "hello\n" > STDOUT.puts "hello" > $stdout.puts "hello" > => hello > I say hello > I say hello PS: Please mess with $stdout, not STDOUT, if at all possible. http://blog.segment7.net/articles/2006/08/17/stdout-vs-stdout -- Eric Hodel - drbrain / segment7.net - http://blog.segment7.net I LIT YOUR GEM ON FIRE!