From: Jagadeesh Date: 2010-01-07T18:55:06+09:00 Subject: Re: Help On Jan 7, 2:33 pm, Jesús Gabriel y Galán wrote: > On Thu, Jan 7, 2010 at 10:20 AM, Jagadeesh wrote: > > hi Gurus, > > > Here my data structure > > > 1234 => { 'open' => '1234-1', > >               'analyzed' => '1234-2', > >               'feedback' => '1234-3', > >               'closed' => '1234-4' > >             } > > 3455 => { 'open' => '3455-1', > >               'analyzed' => '34552', > >               'feedback' => '3455-3', > >               'closed' => '3455-4' > >             } > > > My task is to display numbers [like 1234 or 3455] if they have ('open' > > OR 'analyzed') AND ('closed' OR 'feedback')  keys. I tried following > > code > > > puts numbers if $DATA[pr].has_key?( ( ('closed' || 'feedback') > >                                                         && ('open' || > > 'analyzed') ) ) > > > I am not sure what is wrong with it but its not testing these > > conditions and printing all numbers. Please help me understanding > > has_key method and writing correct condition. > > The has_key? method receives a single key to be checked in the hash. > In your snippet, what you are passing to the has_key? method is the > result of evaluating this: > > ( ('closed' || 'feedback') && ('open' || 'analyzed') ) > > which is: > > irb(main):002:0> ( ('closed' || 'feedback') && ('open' || 'analyzed') ) > => "open" > > So you are testing only for the "open" key. I don't know what $DATA or > pr or numbers are in your snippet, but you are testing only for the > key "open". > > Hope this helps, > > Jesus. $DATA=>{'1234' => { 'open' => '1234-1', 'analyzed' => '1234-2', 'feedback' => '1234-3', 'closed' => '1234-4' }, '3455' => { 'open' => '3455-1', 'analyzed' => '34552', 'feedback' => '3455-3', 'closed' => '3455-4' } } and am reading it in loop so pr will have 1234, 3455 etc. Thanks for your help. Thanks