Wow. Now THAT is what I'm talking about. Thank you! On 11/9/06, Robert Klemme <shortcutter / googlemail.com> wrote: > Jamey Cribbs <jcribbs / netpromi.com> wrote: > > Sean Hussey wrote: > >> Hi everone, > >> > >> I'm not quite sure what the best way to go about this is. I have a > >> file with one user per line. Each line contains ID, username, phone, > >> etc. I split all these up into variables and then either create a > >> new user or update an existing user: > >> > >> File.open("users.txt", "r") do |file| > >> file.each_line { |line| > >> id, username, phone, lots, more, variables = > >> line.chomp.split(/\|/); if user = ldap.get_entry(username) > >> # Existing user. Check for update. > >> user.update(I, hate, passing, all, of, the, variables, that, > >> were, just, split) > >> else > >> # New user. Create! > >> user.new(Same, here, see, what, I mean?) > >> end > >> } > >> end > >> > >> Should I put it all into an array? Hash? Would that make the split > >> line huge but save space on the method calls? How would you go about > >> this? > > > > Well, if #update and #new are looking for the variables in the same > > order that they are in the text file, you could do: > > > > > > File.open("users.txt", "r") do |file| > > file.each_line { |line| > > rec = line.chomp.split(/\|/); > > if user = ldap.get_entry(rec[1]) > > # Existing user. Check for update. > > user.update(*rec) > > else > > # New user. Create! > > user.new(*rec) > > end > > } > > end > > Or even > > File.open("users.txt", "r") do |file| > file.each_line { |line| > rec = line.chomp.split(/\|/) > user.send(ldap.get_entry(rec[1]) ? :update : :new, *rec) > } > end > > :-) > > robert > > >