> Here's the setup:
> I have set up a hash %categories where the key is one number and the value
> is another
> i.e. $categories('1094') = 100049-0220-100004

I assume you meant (note braces and quotes):

  $categories{1094} = '100049-0220-100004'

otherwise the value will be 100049-0220-100004 = -99.

> So, further on down, I'm trying to do a lookup in %categories to see if a
> value is there.  (I can
> swap the key and the value in the setup if it will make this next step
> easier....)
> and I had a while loop to search through each of the keys & values, but
> the problem is
> that it doesn't break out of the while loop, and the wrong value gets set
> as $myID;

There are two ways I can think of: (1) you can copy and reverse the hash or
(2) you can loop through the values until you find a match.


------------------------------------------
# remember, hashes are not in key order
# note () NOT {}
%categories = ( 1094 => '100049-0220-100004',
                1095 => '100059-5220-500004',
                1096 => '100669-6620-660004',
                1097 => '100779-7720-770004',
              );
$value = '100779-7720-770004';

# (1)
%reversed = reverse %categories;
print "$reversed{$value}\n";

# (2)
foreach $key(keys %categories){
   print "Loop ", ++$x, "\n";
   if($categories{$key} eq $value){
      print "$key\n";
      print "Exiting within loop $x\n";
      last;
   }
}

------------------------------------------

> #until ($value == $ccid)

Data are text not numeric ($value eq $ccid). See above.


>       #}    ## Need to break out of the while loop here once find it.

last;

> So, here's the question:
> Where can I find information on how to use variables as the keys in a
> hash?

I hope this answers your question. If %categories is not that large OR if
you have a fast computer OR if you have a lotta memory, I would opt for (1)
above because there is no looping--ie, less code to maintain, that is always
good. If you no longer need the original %categories, you can also do

   %categories = reverse %categories;

Otherwise, opt for (2).



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to