Wie kann ich mehrere Listen gleichzeitig in Perl durchlaufen?

8

Ich muss eine Textdatei erstellen (aptest.s) , die ich zum Einlesen in ein anderes Programm verwenden kann. Ich benutze Perl, weil ich eine große Liste habe, von der ich arbeiten kann. Mein Code ist wie folgt (was nicht die gewünschte Ausgabe ergibt - nach Code und tatsächlicher Ausgabe gezeigt). Jede Hilfe wäre willkommen.

%Vor%

Tatsächliche Ausgabe :

%Vor%

Gewünschte Ausgabe

%Vor%     
Krishnan 04.05.2009, 23:08
quelle

4 Antworten

20

Siehe each_array in Liste :: MoreUtils :

%Vor%     
Sinan Ünür 04.05.2009 23:17
quelle
4

Ich denke Sie versuchen, vier separate Blöcke zu erstellen, wobei jedes Element aus dem Array link mit dem entsprechenden Element aus dem Array link2 verknüpft ist?

Sie geben jedoch sechzehn Blöcke aus, einen für jede Kombination von link und link1 .

Versuchen Sie stattdessen:

%Vor%     
Alnitak 04.05.2009 23:22
quelle
2

Beim Lesen Ihrer Frage war es schwierig zu sagen, was Sie wirklich wissen wollten. Ich glaube, dass Sinan Unur korrekt ist und dass Sie gleichzeitig über zwei Arrays iterieren wollen. Wie er sagt, bietet List :: MoreUtils die sehr praktische Funktion each_array() .

Es ist auch einfach, über einen oder mehrere Arrays nach Index zu iterieren.

Sie können eine Liste von Indizes zur Verwendung mit einer normalen for-Schleife generieren. Dies verwendet $# , um den Index des letzten Wertes im Array zu erhalten.

%Vor%

Oder Sie können eine C-style for-Schleife verwenden, um Ihre Indizes zu generieren. Dies nutzt die Tatsache, dass ein im skalaren Kontext ausgewertetes Array die Anzahl der Elemente zurückgibt.

%Vor%

Es könnte auch mit $# :

geschrieben werden %Vor%

Nachdem Sie Ihren Code gelesen hatten, war klar, dass Sie nicht mit Perls zitierenden Operatoren . Wenn Sie sie effektiv verwenden, können Ihre Skripte viel einfacher schreiben und lesen.

Gestatten Sie mir in freundlichem Ton, Ihr Skript aufzuräumen:

%Vor%     
daotoad 05.05.2009 01:17
quelle
0

Können Sie die Größe Ihres Codes und Beispieldaten reduzieren, während der Fehler noch reproduziert wird? Ich kann den Unterschied zwischen der tatsächlichen und der erwarteten Ausgabe nicht sofort erkennen.

Manchmal macht das Finden eines minimalen Satzes von Code und Daten, die ein Problem verursachen, die Lösung offensichtlich.

Wenn man etwas genauer hinschaut, gibt es nur ein bisschen Ausgabecode, der variabel ist:

%Vor%

Ihr Fehler wird wahrscheinlich da sein.

    
Jon Ericson 04.05.2009 23:15
quelle

Tags und Links