From: "weathercoach@..." Date: 2007-06-29T07:45:01+09:00 Subject: newby non/programmer trying to understand classes Hello. Brief disclaimer. I'm coming from a bourne shell back ground and currently all of my ruby scripts look like shell scripts where I create methods like i would a shell function and now that I understand some of the language basics (variables, loops, exceptions) I want to improve my skills and try to leverage the language instead of just brute forcing my way through problems. I'm not looking for a one liner wizardry solution but some help getting a better understanding of classes and ruby in general to change my approach to writing ruby scripts. I've scaled down my project to the most basic components that will still allow me to express my areas of confusion. I have a file that changes daily which contains a list of people in this format bob.smith bill.johnson betty.joe tony.johnson wilbur.smith Additionally I have a directory populated with 1 file per uniq last name (ie: smith, johnson, joe). I need to parse through the days list and then cleanse the last name files of the previous entries and insert the updated list. I've got the script that does this it is not very efficient (ie: i must define all the last names in advance). So now i've started to rewrite the script and this is where I'm stuck # I just barely understand setter/getter enough so can create LastName objects and then # read the @first or @last variables class LastName def initialize(n) @first, @last = n.split(".")[0], n.split(".")[1] end attr_accessor :first, :last def get_last @last end end # Here I am trying to dynamically define all of the last name variables which would contain # all of the strings that have the given last name. nf = File.open("people", "r") surnames = [] nf.each_line do |l| p = LastName.new(l) sur = p.get_last sur << l surnames << sur end # # I try to access the various "sur" variables which should contain the list of people with a specific last # name but cannot figure out how to call the specific instance of "sur". Is their some way I could # dynamically create the "sur" variable as say "smith" and then include them in the "surnames" # array so later I could loop through the surnames.uniq array and get the name of all the "sur" # variables. Here is my pseudo code surnames.uniq.each do |s| namefile = File.open(s,"w+") namefile << s end # I realize that my problem is pretty rudimentary but so far i've only been able to create basic classes # and instantiate 1 object at a time to understand the getter/setter methods. Trying to iterate # through a list my pea brain gets mired in all the different objects and how do I look at certain ones. Anyhoo I'd appreciate comments on my specific dynamic variable problem or any other pointers to help my get to the "AH HA!" moment with constructing and using classes which I feel I'm pretty close to. TIA. G ps: I own many ruby books and have spent about 20 hours trying to solve this pretty basic situation and dont know where else to go for help.