Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!news.albasani.net!news2.arglkargh.de!news.musoftware.de!wum.musoftware.de!de-l.enfer-du-nord.net!feeder2.enfer-du-nord.net!talisker.lacave.net!lacave.net!not-for-mail From: Simon Harrison Newsgroups: comp.lang.ruby Subject: Searching a CSV file - beginner seeking help Date: Fri, 1 Apr 2011 13:38:18 -0500 Organization: Service de news de lacave.net Lines: 64 Message-ID: <9ac7bd74c5f7cbe9b248a3506089d995@ruby-forum.com> NNTP-Posting-Host: bristol.highgroove.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Trace: talisker.lacave.net 1301683117 52668 65.111.164.187 (1 Apr 2011 18:38:37 GMT) X-Complaints-To: abuse@lacave.net NNTP-Posting-Date: Fri, 1 Apr 2011 18:38:37 +0000 (UTC) X-Received-From: This message has been automatically forwarded from the ruby-talk mailing list by a gateway at comp.lang.ruby. If it is SPAM, it did not originate at comp.lang.ruby. Please report the original sender, and not us. Thanks! For more details about this gateway, please visit: http://blog.grayproductions.net/categories/the_gateway X-Mail-Count: 380762 X-Ml-Name: ruby-talk X-Rubymirror: Yes X-Ruby-Talk: <9ac7bd74c5f7cbe9b248a3506089d995@ruby-forum.com> Xref: x330-a1.tempe.blueboxinc.net comp.lang.ruby:2121 Hi all. I've written a little script to search a csv file for films. It works but has problems. I'd appreciate any pointers with the following: 1. I've used instance variables without a class, to make them visible amongst methods. Is this acceptable for a short script like this? 2. As it is, it will only match exactly. For example, I have The Mummy and The Mummy Returns. If I search for 'mummy' program reports "film not found." I know I need to use Regexp's, not sure how to implement it here though. 3. Any other comments gratefully received. ################# # search_films.rb ################# require 'csv' def load_xvid_file(path_to_csv) @names = [] csv_contents = CSV.read(path_to_csv) csv_contents.shift csv_contents.each do |row| @names << row[0] end @names.each { |f| f.downcase! } end def search_for_film print "Enter name of film to search for: " film = gets.chomp.downcase puts if @names.include?(film) puts "#{film} found!" else puts "#{film} not found :(" end prompt end def prompt print "Search again? (y or n) " answer = gets.chomp.downcase case answer when /y/ search_for_film when /n/ puts "Goodbye." exit else prompt end end load_xvid_file("/home/simon/Documents/CSV/XviD.csv") search_for_film -- Posted via http://www.ruby-forum.com/.