Christian K.: CGI/Perl

Hallo Leute,
ich bin gerade dabei mich ein wenig in CGI und Perl einzuarbeiten und hänge da an einem Problem wo ich nicht weiterweis.
Ich habe eine Textdatei, die ich in einem Perlscript einlese.

======== Schnipp ========

open(FH, "datei.txt");
@array = <FH>;
foreach $element (@array)
   {chomp $element;}

print "@array";

======== Schnapp ========

Wie kann ich nun ein HTML-Textarea erzeugen und die Daten von der Textdatei in diese Textarea schreiben, daß der Browser dann anzeigen soll.
Daten vom Textarea mitteln POST in die Datei zu schreiben wird überall erklärt, aber der umgedrehte Fall nicht. Finde ihn zumindest nicht.
Wer kann mir helfen oder hat sogar ein kleines Anfängerbeispiel für mich ?

Danke schon mal

Christian

  1. Hi,

    print "@array";
    Wie kann ich nun ein HTML-Textarea erzeugen und die Daten von der Textdatei in diese Textarea schreiben, daß der Browser dann anzeigen soll.
    Daten vom Textarea mitteln POST in die Datei zu schreiben wird überall erklärt, aber der umgedrehte Fall nicht. Finde ihn zumindest nicht.

    komisch, wieso hast Du denn dann bereits den dafür nötigen Code verfasst? Eventuell möchtest Du noch $" hinreichend günstig setzen, aber das ist dann alles.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      print "@array";
      Wie kann ich nun ein HTML-Textarea erzeugen und die Daten von der Textdatei in diese Textarea schreiben, daß der Browser dann anzeigen soll.
      Daten vom Textarea mitteln POST in die Datei zu schreiben wird überall erklärt, aber der umgedrehte Fall nicht. Finde ihn zumindest nicht.

      komisch, wieso hast Du denn dann bereits den dafür nötigen Code verfasst? Eventuell möchtest Du noch $" hinreichend günstig setzen, aber das ist dann alles.

      Cheatah

      Vielleicht hab ich ja nen Denkfehler.

      Aus dem Textfeld im Browser über Variablen im Perlcode in eine externe Datei zu schreiben geht.

      Aber von einer externen Datei im Perlcode über ne Variable in das Textfeld der Browsers zu schreiben nicht.

      Der Text aus der Datei wird höchsten irgendwo im Browser angezeigt aber eben nicht im Textfeld.

      Ich möchte erreichen, das der Inhalt der Textdatei (z.B. Namen.txt) im Textfeld der Browsers angezeigt wird und das z.B. ein Name in diesem Textarea geändert wird und mittels Button zurück in die Datei (Namen.txt) geschrieben wird. Dananch soll der Browser das Textfeld aktuallisieren und den soeben geänderten, neuen oder gelöschten Eintrag anzeigt.

      Danke

      Christian

      1. Hi,

        Aber von einer externen Datei im Perlcode über ne Variable in das Textfeld der Browsers zu schreiben nicht.

        nein, natürlich nicht; dazu müsste der Server eine Verbindung zum Client offen haben, was den Grundprinzipien von HTTP widerspricht. Du erzeugst natürlich immer ein komplettes Dokument.

        Der Text aus der Datei wird höchsten irgendwo im Browser angezeigt aber eben nicht im Textfeld.

        Dann hast Du das Dokument nicht richtig erzeugt.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. open(FH, "datei.txt");

    Stets mögliche Fehler abfangen:

    open FH, 'datei.txt' || die "Couldn't open, error: $!"

    @array = <FH>;

    Bitte *immer* das strict-Pragma einsetzen! Bei mir beginnt ein Script (abgesehen von der shebang) stets so:

    use strict;  
    use diagnostics;
    

    foreach $element (@array)
       {chomp $element;}

    Du kannst chomp auch auf die Liste anwenden:

    my @array = <FH>;  
    chomp @array;
    

    print "@array";

    Die Doublequotes sind überflüssig.

    Wie kann ich nun ein HTML-Textarea erzeugen und die Daten von der Textdatei in diese Textarea schreiben, daß der Browser dann anzeigen soll.

    Verwende für HTML-Ausgaben das CGI-Modul, dort gibt es auch eine Methode für die Ausgabe einer textarea. Und übrigens: Die Zeilenumbrüche solltest du drin lassen, wenn das Inhalt einer Textarea werden soll.

    Wer kann mir helfen oder hat sogar ein kleines Anfängerbeispiel für mich ?

    use strict;  
    use diagnostics;  
    use CGI;  
      
    my $input;  
      
    # für den folgenden Block lies [link:http://perldoc.perl.org/perlfaq5.html#How-can-I-read-in-an-entire-file-all-at-once%3f-slurp-file%2c-slurping@title=perlfaq5]  
    {  
      local(*INPUT, $/);  
      open INPUT, 'datei.txt' || die "can't open: $!";  
      $input = <INPUT>;  
    }  
    my $cgi = CGI->new;  
    print $cgi->header( -type => 'text/html', -charset => 'iso-8859-1' ),  
          $cgi->start_html ( -title => 'Testseite' ),  
          $cgi->textarea( -name    => 'test',  
                          -default => $input,  
                          -rows    => 10,  
                          -columns => 50  
                        ),  
          $cgi->end_html;
    

    Zwar kommt da kein valides HTML-Dokument heraus, da das Formular drumherum fehlt, aber das sollte nach Lektüre der Doku kein Problem mehr sein, denke ich.

    Siechfred

    --
    Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
    1. Hallo!

      print "@array";

      Die Doublequotes sind überflüssig.

      Das ist leider nicht ganz richtig. Es gibt sehr wohl einen Unterschied zwischen >print @array< und >print "@array"<. Mit Doublequotes werden noch Leerzeichen zwischen den einzelnen Elementen mit ausgegeben, ohne Doublequotes nicht.

      Grüße, Skrilax

      1. print "@array";
        Die Doublequotes sind überflüssig.
        Das ist leider nicht ganz richtig.

        Nene, ich habe nie behauptet, dass es keinen Unterschied gibt, aber im vorliegenden Kontext konnte ich keinen Sinn darin erkennen.

        Siechfred

        --
        Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.