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% 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% 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.
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 $#
:
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%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.