Thread Array Zeilenweise auslesen
(8 answers)
Opened by geloescht at 2012-08-02 23:17
Du machst es dir auch unnötig schwer. Was ist wenn du mal mehr Elemente pro zeile hast?, dann darfst du den gesamten Code umschreiben. Oder weniger. Oder du willst einen bestimmten Eintrag verändern oder lesen. Wenn du alles Hintereinander in ein Array packst musst du die aktuelle Position eines Eintrags errechnen. das kannst du dir sparen wenn du ein ein AoA erzeugst. Damit wird alles einfacher:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ################################## # Read-Out-Engine / Buchausleser # ################################## # bitte das drei-Variablen-open benutzen. # Du schreibst ja keinen perl3 Code. # und bitte Richtige Variablen als Filehandle nutzen. # Das erspart dir einigen Ärger. # Das ist jetzt möglicherweise noch nicht wichtig # solltest du aber mal größere Scripte schreiben, # dann hast du dir die gute Schreibweise schon angewöhnt # und jetzt tut es nicht weh. open(my $LESER, '<', "coresys/message.csv") or die "ERROR: Unable to open the Message-file during read-access!"; flock($LESER, LOCK_SH); my @Collector; my $counter = 0; while(my $zeile = <$LESER>){ # "zeilelende" "\n" entfernen chomp($zeile); push (@Collector, [ ++$counter, split(/;/,$zeile) ]); } close($LESER); Dann kannst du das auslesen wie in meinem ersten Code gezeigt machen: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 foreach my $array_ref (@Collector) { my ($counter, $DB_nick, $DB_nachricht, $DB_zaehler, $DB_gbrgelesen, $DB_IPAdresse, $DB_Monatstag, $DB_Monat, $DB_Jahr, $DB_Stunden, $DB_Minuten, $DB_Sekunden)=@$array_ref; print <<"ENDE"; <div class="buch_eintrag"> <p class="textvariante_c">($counter) Name: $DB_nick [Datum: $DB_Monatstag.$DB_Monat.$DB_Jahr / $DB_Stunden:$DB_Minuten:$DB_Sekunden Uhr] </p> <p class="textvariante_d">$DB_nachricht. </p> </div> ENDE } Und ich habe in foreach ( my $i=0; $i<@Collector; $i+=12) { ein "$" vergessen. das hättest du auch selber herausfinden können. |