Beat: Assoziatives Array: Suchen nach Key<->Value und Value<->Key

Beitrag lesen

ich kann in Perl bei einem assiozativen Array ja nach dem wert eines keys suchen. Nun brauche ich aber ab und zu beide Richtungen.
Also z.B.:

my %dat = (
'00000'  => "A",
'00001'  => "F",
'00002'  => "R"
);


>   
> Ich brauche in meinem Programm einmal welcher Wert zu "00000" gehört, aber auch dass zu "A" eben "00000" gehört.  
>   
> Der Wert und sowohl der Key sind immer einmalig.  
>   
> Gibt es für so etwas eine komfortable Lösung ohne zwei Hashes für beide Richtungen anzulegen?  
  
Das kommt sehr darauf an, was  
00000 ... 00002 darstellen (numerisch sortiert?)  
und ob A F R ganz einfach Daten der länge von 1 Zeichen sind.  
  
Wäre dem sü so könntest du einerseits ganz einfach eine Stringvariable fragen  
   $pos = $DATA{'A'}  
und  
   "A" eq substr( $DATA, $pos, 1 ) and print "OK";  
  
  
Wenn dem nicht so ist, würde ich  
einen Array aufbauen  
   my @RDATA = keys %DATA;  
  
   $RDATA[ $DATA{$\_} ] = $\_;  
  
oder einen inversen Hash aufbauen  
  
   my %RDATA  
   foreach( keys %DATA ){  
     $RDATA{ $DATA{$\_} } = $\_;  
   }  
  
Braucht aber Speicher.  
  
mfg Beat;

-- 
Woran ich arbeite:  
[X-Torah](http://www.elcappuccino.ch/cgi/tok.pl?extern=1-pub-com3306-1)  

><o(((°>           ><o(((°>  

   <°)))o><                     ><o(((°>o