From: Jan Svitok Date: 2006-11-03T23:52:20+09:00 Subject: Re: Using another program (Lynx) from within Ruby On 11/3/06, z wrote: > I'm trying to write a script to read a list of URLS, get the HTTP response > headers and (if there is a page there) from each URL, and output to > a CSV file in this format: > URL, header, <title> > > I've started with something like this, using Lynx to get the headers. The > part that doesn't seem to work is this: > `lynx -dump -head "#{line}"` -- it doesn't want to put the url into the > #{line} within the backticks. > > How do you insert a variable from Ruby into the shell command? I'm ordering > 4 Ruby books by mail today... I haven't seen anything like this in the ones > that I've browsed though. > > > Here is a larger section of the script: > > print "Enter the location of the input file: " > infile = gets.chomp > > # open file > File.open(infile, "r") do |f| > # get HTTP headers with Lynx > output = f.each_line { |line| `lynx -dump -head "#{line}" | grep "HTTP"` } > # puts output to CVS file > # TODO Hi, the #{} should work. Try replacing the command with echo to see to what exactly it is expanded. On a side note, you can use Net::HTTP for this task without calling external program: (from rdoc): response = nil Net::HTTP.start('some.www.server', 80) {|http| response = http.get('/index.html') } p response['content-type'] p response.body