Struppi: Array Ausgabe - wie?

Beitrag lesen

Folgender Code bereitet mir Schwierigkeiten:

Ja, einige.

Du wirst ein paar Tage dich daran versuchen, um dann festzustellen, dass es sinnvoller ist Module zu verwenden, weil so viele Fallstricke lauern und du noch soviele andere Sachen lernen musst, dass es Irrsinn wäre sich jede Grundlage selbst zu programmieren.

Eine der wichtigsten und besten Eigenschaften von Perl ist die Modulvielfalt auf CPAN, wer das nicht nutzt, lernt Perl nie.


open(BOOKENTRY, "<public/guest.csv");

Hier fehlt eine Fehlerabfrage, sobald etwas schief läuftt, wirst du wieder Probleme haben, weil du nicht weißt wo, wenn du nicht prüfst ob eine Operation geklappt hat.

flock(BOOKENTRY, LOCK_EX);

dito.

while(! eof(BOOKENTRY)){

üblicherweise sieht eine solche Schleife so aus:

while(<BOOKENTRY>){  
chomp; # Newline entfernen  
my $zeile = $_; # Ist aber unnötig, da du gleich $_ splitten kannst.  

Bis hierhin scheint alles zu funktionieren. Öffnen, auslesen, in $zeile packen, aufsplitten, komplette Zeile mit push in das Array @GuestData packen, File schliefßen - fertig.

Wenn du das in einem Skript machst, hast du schon das erste große Problem. Sobald du die Datei geschlossen hast, ist der flock entfernt und ein anderer Prozess kann auf die Datei zugreifen und diese verändern.

Wenn du eine Datei lesen und schreiben willst, musst du die Datei immer während des ganzen Prozesses geöffnet halten.

print BOOKENTRY $name,';',$text1,';',$text2,';',$text3,';',$ENV {'REMOTE_ADDR'},';',$Monatstag,';',$Monat,';',$Jahr,';',$Stunden,';',$Minuten,';',$Sekunden;

Etwas schöner ist hier ein join

print BOOKENTRY join ';', [$name, $text1, $text2, ,$text3, $ENV{REMOTE_ADDR}, $Monatstag, $Monat, $Jahr, $Stunden, $Minuten, $Sekunden];  

while(! eof(@GuestData)){

Das ist hier natürlich völliger Unsinn, du willst ja schreiben, also u.U. über das Ende der Datei hinaus schreiben, dieser Aspekt interessiert dich hier nicht.

Wie kann ich ein eingelesenes Array (@GuestData) zeilenweise auslesen und schreiben - wenns geht mit print- bis es leer ist?

Ich glaube Beat hat dir bereits ein Modul genannt, dass das alles macht. Du sparst dir damit viel Arbeit und lernst auch mehr Perl, als so wie du es jetzt machst.

Struppi.

0 88

get-Daten einfach ausgeben

Gary
  • perl
  1. 0
    Beat (offline)
  2. 0
    Struppi
    1. 0
      Gary
      1. 0
        Struppi
        1. 0

          Perl-Problem erledigt!

          Gary
          1. 0
            Gary
            1. 0
              Struppi
              1. 0
                Gary
                1. 0
                  Struppi
                2. 0
                  Struppi
                  1. 0
                    Gary
                    1. 0
                      MudGuard
                      1. 0
                        Gary
                        1. 0
                          MudGuard
                          1. 0
                            Gary
                    2. 0
                      Struppi
                      1. 0
                        Gary
                        1. 0
                          Struppi
                          1. 0
                            Gary
                            1. 0
                              Gary
                              1. 0

                                Perl verstellt Link

                                Gary
                                1. 0
                                  Struppi
                                  1. 0
                                    Gary
                                    1. 0

                                      HTTP_HOST oder REMOTE_ADDR ?

                                      Gary
                                      1. 0
                                        Beat
                                        1. 0
                                          Gary
                                          1. 0

                                            Knifflige IF-Abfrage

                                            Gary
                                            1. 0
                                              Gary
                                              1. 0

                                                IF -Abfrage in IF -Abfrage?

                                                Gary
                                                1. 0
                                                  Alexander (HH)
                                                  1. 0
                                                    Gary
                                                    1. 0
                                                      Gary
                                                      1. 0

                                                        exit-Befehl ohne Wirkung!

                                                        Gary
                                                        1. 0
                                                          Struppi
                                                          1. 0
                                                            Gary
                                                            1. 0
                                                              Gary
                                                              1. 0
                                                                Struppi
                                                    2. 0
                                                      Struppi
                                                      1. 0

                                                        Verständnisfrage IF-Anweisung

                                                        Gary
                                                        1. 0
                                                          Gary
                                                          1. 0
                                                            Struppi
                                                            1. 0
                                                              Beat
                                                              1. 0
                                                                Gary
                                                                1. 0
                                                                  Gary
                                                                2. 0
                                                                  Beat
                                                                  1. 0
                                                                    Gary
                                                                    1. 0
                                                                      Beat
                                                                      1. 0

                                                                        Rest ok - LOCK_SH klemmt!

                                                                        Gary
                                                                        1. 0
                                                                          Gary
                                                                        2. 0
                                                                          Beat
                                                                          1. 0
                                                                            Gary
                                                                            1. 0
                                                                              Beat
                                                                              1. 0
                                                                                Gary
                                                                                1. 0
                                                                                  Beat
                                                                                  1. 0
                                                                                    Gary
                                                                                    1. 0
                                                                                      Beat
                                                                                      1. 0
                                                                                        Gary
                                                                                        1. 0

                                                                                          Array Ausgabe - wie?

                                                                                          Gary
                                                                                          1. 0

                                                                                            Alles gelöst - Fragen erledigt!

                                                                                            Gary
                                                                                          2. 0
                                                                                            Struppi
                                                                                          3. 0
                                                                                            Beat
                                                                                            1. 0
                                                                                              Gary
                                                                                              1. 0
                                                                                                MudGuard
                                                                                                1. 0
                                                                                                  Gary
                                                                                                  1. 0
                                                                                                    MudGuard
                                                                                                    1. 0

                                                                                                      Alles fertig - Danke für die Hilfe

                                                                                                      Gary
                                                              2. 0
                                                                Struppi
                                            2. 1
                                              Beat
                                      2. 0
                                        Alexander (HH)
                                        1. 0
                                          Gary
                                          1. 0
                                            Struppi
                                            1. 0
                                              Gary
                                        2. 0
                                          Gary
                                          1. 0
                                            Alexander (HH)
                                            1. 0

                                              Perl Sicherheit bei Daten über cgi

                                              Gary
                                              1. 0
                                                Alexander (HH)
                          2. 0
                            Beat
                            1. 0
                              Struppi
                            2. 0
                              Gary
                              1. 0
                                Beat
      2. 0
        Struppi
  3. 0
    Gary
    1. 0
      Struppi
  4. 0
    hotti
    1. 0
      Gary
      1. 0
        hottii
      2. 1
        hotti