Heylo wieder,Perl - Zugriff auf und Array-Element, das in einem anderen Array gehalten wird
Ich habe versucht, mein Programm etwas wartungsfreundlicher zu machen. Ich habe ein Array, das ich erklären:
my @pizza = ($p1 = "Pizza One", $p2 = "Pizza Two");
ich dann gehen Sie vor und setzen diese @Pizza Array in ein anderes Array, etwa so:
my @food = (\@pizza);
Wenn ich versuche, p2 für den Zugriff auf entweder $ p1 oder $ Über die @ food -Eigenschaft erhalte ich einen Wert wie "Array {0x8001}", der eine Speicherreferenz zu sein scheint. Was ich versucht war:
$test = ${$food[$pizza[$p1]]};
Was ist der corret Weg, dies zugreifen? Ich suche, Indizes NICHT zu verwenden, um Programmlesbarkeit zu erleichtern. Könnt ihr mir in die richtige Richtung zeigen?
Grüße,
Dies ist, was ich zu tun versucht:
ich mehrere Datenbanken (für Gespräche willen dies ein Beispiel ist)
Datenbank One
Table One (D1T1) | Spalte Eins | Spalte Zwei | Spalte drei | Spalte Vier
Tabelle Zwei (D1T2) | Spalte Eins | Spalte Zwei | Spalte Drei
Datenbank Zwei
Tabelle Eins (D2T1) | Spalte Eins | Spalte Zwei | Spalte Drei
Tabelle Zwei (D2T2) | Spalte Eins | Spalte Zwei | Spalte Drei
Tabelle Drei (D2T2) | Spalte Eins | Spalte Zwei | Spalte 3
Zwischen diesen beiden Datenbanken gibt es Informationen, die sich auf bestimmte Datensätze beziehen, die sich über beide befinden. Was ich versuche, ist ein Array zu erstellen (jedes Array wird eine Datenbank darstellen) und Variablen einfügen (jede Variable wird ein Table.field innerhalb der Datenquelle darstellen) Sobald ich dies getan habe, erstelle ich ein Array für alle Arrays (Die, die die DBs repräsentieren), da dieses Array einen einzigen Eintrag zwischen den beiden Datenbanken darstellt, auf den ich dann reagieren kann. Beispiel:
@ D1 = (t1.col1, t1.col4, t2.col1); @ D2 = (t1.col1, t2.col1, t3.col2, t3.col3);
@rec = (\ @ D1, \ @ D2);
Wenn ich wissen möchte, was in Datenbank 2 -> Tabelle 2 -> Spalte 4 gehalten wurde, was wäre die Aussage? Sollte ich stattdessen Hashes verwenden? Ich habe eine Anforderung für dieses zweidimensionale Array/Hash.
Jede Hilfe wird sehr geschätzt.
MC
gibt es keinen Grund, warum Sie ein Array hier anstelle eines Hash verwenden? Was du in der ersten Zeile machst, ist ein Array zu erstellen: @pizza = ("Pizza One", "Pizza Two") und zwei Variablen $ p1 = "Pizza One", $ p2 = "Pizza Two". Das ist mehr oder weniger, wo ich dich verliere. Versuchen Sie den Index von @pizza zu finden, der den Wert $ p1 hat? –
Vielleicht wäre es besser, wenn Sie aufhörten und die Datenstruktur beschrieben, die Sie erstellen möchten und wie Sie darauf zugreifen möchten. Etwas wie: Ich möchte eine Liste von Lebensmitteln nach Kategorien wie Pizza, und ich möchte, dass diese Kategorien einzelne Rezepte über Rezeptnamen (wie "Hawaiian Pizza") zugreifen können. Sobald wir wissen, was Sie mit den Daten machen, können wir Ihnen helfen. –
Auch wenn Sie Ihr Problem nicht von Grund auf erklären und nach Lösungsvorschlägen fragen möchten, erklären Sie zumindest, was Sie mit dem von Ihnen geposteten Code zu tun haben. Mein @pizza = ($ p1 = "Pizza One", $ p2 = "Pizza Two") sieht einfach komisch aus und da es nicht offensichtlich ist, was Sie versuchen, ist es schwer, Sie in die richtige Richtung zu weisen. –