Jutta Rosenbach: CGI:Zahl einlesen, hoch oder runterzählen

Hallo CGI-Profis

das von mir genutzte Chat-Programm füllt eine nutzlose Chatter-Datei mit Chatternamen, und zwar: sooft diese posten (schnattern).

Statt dessen hätte ich lieber, daß nur die aktuelle Zahl drinsteht.

Etwa so:
Zu Beginn sieht der User eine Anwesenheits-HTML

User meldet sich an.
Das damit in Gang gesetzte Script öffnet ausserdem (was es sonst noch alles so zu tun hat) die Chatter-Datei (die, wie gesagt nur eine Zahl enthalten soll), liest die Zahl, zählt eins dazu und ersetzt die Chatter-Datei-Zahl gleich um die aktuelle Zahl.
Dann erstellt das Script für die anderen User, die noch nicht im Chat sind, eine aktualisierte (oder neue) Anwesenheits-HTML.

User meldet sich ab (hoffentlich).
Das damit in Gang gesetzte Script öffnet ausserdem die Chatter-Datei, liest die Zahl, zieht eins ab und aktualisiert die Chatter-Datei-Zahl gleich wieder.
Dann erstellt das Skript eine aktualisierte (oder neue) Anwesenheits-HTML.

Wie man einem Script beibringt, eine HTML-Datei zu schreiben, weiß ich.

Falls sich jemand die Mühe macht, mir ein übertragbares Beispiel zu basteln, würde ich mich sehr freuen.

Viele Grüße
Jutta

  1. hi!

    Das damit in Gang gesetzte Script öffnet ausserdem (was es sonst noch alles so zu tun hat)
    die Chatter-Datei (die, wie gesagt nur eine Zahl enthalten soll), liest die Zahl, zählt eins dazu
    und ersetzt die Chatter-Datei-Zahl gleich um die aktuelle Zahl.

    Hier der Code, der nur eine Zahl in der Datei erhöht:

    open(DATEI, "<datei.dat");
    $i = <DATEI>;
    close(DATEI);
    open(DATEI, ">datei.dat");
    print DATEI ++$i;
    close(DATEI);

    Wenn die Zahl erniedrigt werden soll, einfach das ++$i durch ein --$i ersetzen.

    bye, Frank!

    1. Hallo Frank

      Vielen Dank für Deine Antwort,

      open(DATEI, "<datei.dat");
      $i = <DATEI>;
      close(DATEI);
      open(DATEI, ">datei.dat");
      print DATEI ++$i;
      close(DATEI);

      falls das auf dem einen oder anderen Rechner nicht ganz klappen sollte, kann auch folgende Variannte versucht werden:
      open(CHATTER, "<chatter.dat");
      $i = <CHATTER>;
      $i=$i+1;
      close(CHATTER);
      open(CHATTER, ">chatter.dat");
      print CHATTER $i;
      close(CHATTER);
      Dieser Tip stammt von Andreas Bierhals aus dem Chat.

      Gruß
      Jutta

      1. hi!

        open(DATEI, "<datei.dat");
        $i = <DATEI>;
        close(DATEI);
        open(DATEI, ">datei.dat");
        print DATEI ++$i;
        close(DATEI);

        falls das auf dem einen oder anderen Rechner nicht ganz klappen sollte, kann auch folgende Variannte versucht werden:
        open(CHATTER, "<chatter.dat");
        $i = <CHATTER>;
        $i=$i+1;
        close(CHATTER);
        open(CHATTER, ">chatter.dat");
        print CHATTER $i;
        close(CHATTER);

        ?? Das macht doch genau das gleiche, was meine Variante auch macht, nur dass es etwas ungeschickter ist *g*
        Um eine Variable zu inkrementieren verwendet man eigentlich nie $i = $i + 1; sondern die abgekürzte Variante $i++ um sie NACH der Aktion zu inkrementieren, oder ++$i um sie VORHER zu inkrementieren.

        bye, Frank!

        bye, Frank!