On Jan 16, 11:37 ¨Âí¬ ÒéãèáòäÏîÒáéìó <RichardDummyMailbox58... / USComputerGurus.com> wrote: > On Jan 16, 7:06 ¨Âí¬ Êïóè Ãèåå¼êïóè®ãè®®®Àçíáéì®ãïí¾ ÷òïôåº > > > > > [Note: ¨Âáòôó ïæ ôèéó íåóóáç÷åòå òåíïöåôï íáëå éô ìåçáðïóô®Ý > > > On Sun, Jan 16, 2011 at 5:45 PM, RichardOnRails < > > > RichardDummyMailbox58... / uscomputergurus.com> wrote: > > > Hi, > > > > I've got a text file with 7 fields. ¨Â óõããåóóæõììù åøôòáãôèäáôá > > > on each with a regex and for debugging purposes print each lines > > > fields. > > > > Now I want to edit and organize the data for subsequent processing. > > > But populating the hash fails. I posted the code on > > >http://www.pastie.org/1468271 > > > > The "puts" on line 15 shows that the regex captures the 7 fields in > > > the text file. > > > Lines 17-19 is an attempt to build a hash using the known values in > > > the $n variables. > > > That attempt fails because line 21 shows that it's nil instead the > > > string 100.0000 reported by line 15. > > > > Maybe I should just build an array of the extracted values and use the > > > symbols I've created to index the array. ¨Âôèíåáî ôéíå ¨Âáéîì> > > for my education, I'd like to know where I went wrong with this hash. > > > > Thanks in Advance, > > > Richard > > > Hi, Richard. It looks like your problem is that you put your data into your > > hash with `:n_shares=>$2`, on line 17, but you pull it out with `puts > > h[:shares]`, on line 21. When you get in weird situations like that, where > > it seems correct on one line, and incorrect just a few later, give yourself > > a sanity check by breaking it down into as small of steps as possible. I'd > > think "well, if it isn't in there, then wtf does my hash look like?" and > > instead of `puts h[:shares]` I'd stick a `p h` in there, which will print > > out an inspected version of the array. At that point, I'd see the data > > exists, and know the problem must be how I'm pulling it out. > > > Also, I don't think `h.each_pair { |n,v| h[n] = v }` does anything, you are > > asking it for each key and value that it has, then telling it to set that > > key to that value. Well, if it gave you that pair, then it is already set. > > Hi Josh, > > Thanks for your reply. ¨Â ÷òïôôèáô óôõðéä óôõæìáôå ìáóô îéçèáî> didn't like what I was composing. ¨Â ÷òïôïîáððòïáãè æï> initializing a hash and liked the result well enough, but didn't like > the copy & paste I did to create it. I do as much cut and paste as I > can 'cause I hate to feel like a clerk-typist.) > > So I had two redundant thing coded. ¨Âîä ÷èåî ìïïëåä áô éô ôïäáù¬ ¨Â > forgot what I was doing, so I sent out my SOS. > > > give yourself a sanity check by breaking it down into as small of stepss possible. > > That's in keeping with Agile Programming's principle, ¨Âîä ɧ> striving to embrace that. ¨Â§í çåáòéîõð ôï áãôõáììù ÷òéôíù ÒÓðå> stuff first before coding functionality. > > > I'd think "well, if it isn't in there, then wtf does my hash look like?" and instead of > > `puts h[:shares]` I'd stick a `p h` in there. > > That's a great point. ¨Â óèïõìä ÷åáî íùóåìæ ïæ÷òéôéîóï íõãè ãïäå > to inspect my code's result and use Ruby's inspect in the form of the > 'p' command. ¨Âåóóïìåáòîåä¬ èïðå> > This is my current idea for succinct code to support further data > analysis: > > field_names =%w<Name Shares Opened_MDY Closed_MDY Proceeds Cost > GainLoss> > h = {} > (1..field_names.size).each { |name| h[name] = eval($ + i.to_s) } > > Of course, that doesn't work, ¨Âõô äåóðéôíù ðåòõóéîç ïæ Ðòáçíáôéã§> Programming Ruby, 2nd ed., ¨Â èáöåî§óï æáæéçõòåïõèïôï ãïäå > that third line. ¨Âîù éäåáó® ¨Âùïõ§òå ôïâõóùïò ÷èáôåöåò ¨Âïî§ô > bother responding and I'll post about it tomorrow. > > Many thanks for your thoughtful help. > > Best wishes, > Richard Hey Josh, Please forget about this last question. It is garbled. I'm posting it anew. Thanks, Richard