>>>>> "D" == Derrick Shoemake <dshoemake / protocolinc.com> writes: D> example that doesn't work but shows the concept. What do you want to say with "doesn't work" ? This script give the right output pigeon% ruby require 'cgi' cgi = CGI.new("html3") cgi.out{ cgi.html{ cgi.head{ "\n"+cgi.title{"This is a ruby test"} } + cgi.body{ "\n"+cgi.h1{ "A Test ruby page" } + cgi.br + cgi.img("/cgi-bin/fills.rb") } } } (offline mode: enter name=value pairs on standard input) ^D Content-Type: text/html Content-Length: 195 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><HTML><HEAD> <TITLE>This is a ruby test</TITLE></HEAD><BODY> <H1>A Test ruby page</H1><BR><IMG SRC="/cgi-bin/fills.rb" ALT=""></BODY></HTML> pigeon% ruby The script "/cgi-bin/fills.rb" must just send as first line "Content-Type: image/gif\n\n" before the output of the image Guy Decoux