Variablen mit Variablen bestimmen?

13/07/2008 - 12:18 von Mphak | Report spam
Hallo,
vielleicht hat jemand von euch eine Idee, wie ich es bessermachen
könnte.

Ich habe ein Programm geschrieben, in dem ich Zahlenreihen ermittle.
Je nach erste Zahl soll diese Reihe in ein bestimmtes Array
gespeichert werden.

zum Beispiel:

1,2
3,4
1,4
2,3
Diese Zahlenreihen sollen in verschiedene Hashes eingeteilt werden.

Hash1 # soll dann 1,2 und 1,4 erhalten
Hash2 # soll dann 2,3 erhalten
Hash3 # soll dann 3,4 erhalten.

Bisher habe ich das mit einer Funktion und vielen If - Anweisungen
gehàndelt.
Aber gibts da nicht einen einfachen Weg.

Ich habe mal soetwas probiert, scheint aber nicht zu funktionieren.

if($string =~ /^(),.*$/)
{
$index = $1;
}

if(exists $hash$index{$string})
{
$hash$index{$string} = $$hash$index{$string}+1;
#print"vorhanden";
}
else
{
$hash$index{$string} = 1;
#print"nicht vorhanden";
}

Habt ihr eine Lösung für dieses Problem?
Oder kann ich auch Hashes in Arrays speichern.

Sprich
Array[0] = %Hash1
Array[1] = %Hash2
Array[2] = %Hash3

Aber wie spreche ich dann die einzelnen Hashes an.
Ich meine, wie gehe ich dann Hash1 durch um zu prüfen, ob es den Key
1,2 in Hash1 überhaupt gibt.

Wàre schön, wenn Ihr mir dabei weiterhelfen könntet.

Gruß Mphak
 

Lesen sie die antworten

#1 Christian Kirsch
13/07/2008 - 15:39 | Warnen spam
Mphak schrieb:
Hallo,
vielleicht hat jemand von euch eine Idee, wie ich es bessermachen
könnte.

Ich habe ein Programm geschrieben, in dem ich Zahlenreihen ermittle.
Je nach erste Zahl soll diese Reihe in ein bestimmtes Array
gespeichert werden.

zum Beispiel:

1,2
3,4
1,4
2,3
Diese Zahlenreihen sollen in verschiedene Hashes eingeteilt werden.

Hash1 # soll dann 1,2 und 1,4 erhalten
Hash2 # soll dann 2,3 erhalten
Hash3 # soll dann 3,4 erhalten.




So ganz verstehe ich nicht, was Du da willst. Ein Hash speichert doch
immer Schlüssel und Werte dazu - was ist denn bei Dir der Schlüssel und
was der Wert?

if(exists $hash$index{$string})
{
$hash$index{$string} = $$hash$index{$string}+1;
#print"vorhanden";



Das wiederum sieht so aus, als ob Du Dir merken wolltest, wieviele
Elemente Du hast ...

}
else
{
$hash$index{$string} = 1;
#print"nicht vorhanden";
}

Habt ihr eine Lösung für dieses Problem?
Oder kann ich auch Hashes in Arrays speichern.



Du kannst *Referenzen* auf Hashes speichern.


Sprich
Array[0] = %Hash1



Array[0] = \%Hash1, IIRC

Aber wie spreche ich dann die einzelnen Hashes an.


Ich meine, wie gehe ich dann Hash1 durch um zu prüfen, ob es den Key
1,2 in Hash1 überhaupt gibt.



Du willst "1,2" als Schlüssel speichern, und zwar im selben Hash wie
"1,4"? Warum denn überhaupt die "1", Du weißt doch, dass der Anfang des
Schlüssels immer "1," sein soll?

In der Perldokumentation gibt es IIRC einen làngeren Teil zum Thema
Datenstrukturen (Lists of Lists, Array of Hashes usw). Vielleicht hilft
das weiter.

Ähnliche fragen