Ausgabe nur einer Zeile
Birdman
- cgi
Hallo zusammen,
ich habe ein kleines Perl CGI-Skript, mit dem ich mehrere einzelne Datensatzdateien (ASCII-Text) verarbeite. In jeder Datei stehen in jeder einzelnen Zeile jeweils 13 Informationen mit Trennzeichen getrennt, die Anzahl der Zeilen je Datei variiert und nimmt ab und an zu. In einer HTML-Ausgabe mit print stehen nun die anzuzeigenden Infos je Zeile schön nebeneinander, die einzelnen Zeilen und dann Dateien schön untereinander. Wie erreiche ich es denn nun, daß je Datei nur die erste Zeile angezeigt wird, und die anderen nicht? Ich habe schon mit while etc. rumprobiert, geht aber nicht.
Hat vielleicht jemand einen Tip? Danke im voraus.
Birdman
Hier das wichtigste des skript:
foreach (@DAT_Dateien) {
{
open(FILE, $_);
for(<FILE>)
{
print qq|
<body bgcolor=white text=black>
|;
($back, $datum, $tour, $action, $strecke, $profil, $schild, $esskont, $essziel, $dusch, $gesamt, $name, $komment) = split /|/;
$komment =~ s/(.{800})/$1<br>/g;
$komment =~ s/\n*//g;
print qq|
<p>$tour <a href="http://www.m.de/$back" target="_self">TTT</a></p>
|;
}
close(FILE);
Hi,
ich habe ein kleines Perl CGI-Skript, mit dem ich mehrere einzelne Datensatzdateien (ASCII-Text) verarbeite.
betrifft Dein Problem nun CGI oder Perl?
die Anzahl der Zeilen je Datei variiert und nimmt ab und an zu.
Frauen nehmen ab und zu ab und zu ;-)
Wie erreiche ich es denn nun, daß je Datei nur die erste Zeile angezeigt wird, und die anderen nicht?
Indem Du die entsprechende Schleife ersetzt.
Hat vielleicht jemand einen Tip?
Ja. Es ist eine for-Schleife.
foreach (@DAT_Dateien) {
{
Wozu die doppelte Blocköffnung?
for(<FILE>)
{
print qq|
<body bgcolor=white text=black>
Was für ein XML setzt Du ein, welches mehrere <body>-Elemente erlaubt und Anführungszeichen um Attributwerte nicht zwingend erfordert? Wenn das <body>-Element nur einmal ausgegeben würde, wäre mein Tipp HTML.
($back, $datum, $tour, $action, $strecke, $profil, $schild, $esskont, $essziel, $dusch, $gesamt, $name, $komment) = split /|/;
perldoc -f my
Du beginnst Dein Script nicht mit
#!/usr/bin/perl -w
use strict;
Stelle diesen Mangel ab, sowie die Dir darauf hin genannten Fehler.
Cheatah
Hallo Cheatah,
erstmal Danke!
Frauen nehmen ab und zu ab und zu ;-)
Nicht nur die! ;-))
Indem Du die entsprechende Schleife ersetzt. Es ist eine for-Schleife.
Guter Tip, habe also eine der for-Schleifen for(<FILE>) ersetzt und tatsächlich nur noch eine Zeile pro Datensatz. Aber leider auch nur noch die erste "Variable" (heißt bestimmt anders) je Zeile, die anderen werden einfach ignoriert (bestimmt nicht nur einfach so ;-))
Hast DU villeicht noch einen Hinweis?
Wozu die doppelte Blocköffnung?
Stimmt, war Quatsch. Da hatte ich was rausgelöscht aus meinem Ursprungsskript.
Was für ein XML setzt Du ein, welches mehrere <body>-Elemente erlaubt und Anführungszeichen um Attributwerte nicht zwingend erfordert? Wenn das <body>-Element nur einmal ausgegeben würde, wäre mein Tipp HTML.
Stimmt wohl auch, kümmer ich mich aber erst später drum.
perldoc -f my
Du beginnst Dein Script nicht mit
#!/usr/bin/perl -w
use strict;Stelle diesen Mangel ab, sowie die Dir darauf hin genannten Fehler.
Auch wieder richtig. Nur leider funktioniert das Ganze dann nicht mehr. Da ich (noch) zu wenig Ahnung von Perl habe, wollte ich es erstmal so zum Laufen kriegen.
Grüße und nochmal Danke!
Birdman
Hi,
Indem Du die entsprechende Schleife ersetzt. Es ist eine for-Schleife.
Guter Tip, habe also eine der for-Schleifen for(<FILE>) ersetzt und tatsächlich nur noch eine Zeile pro Datensatz. Aber leider auch nur noch die erste "Variable" (heißt bestimmt anders) je Zeile,
nenn's Spalte.
die anderen werden einfach ignoriert
Vermutlich beachtest Du nur die erste Spalte. Ohne ein Stück Code (in _diesem_ Thread) lässt sich das nicht beurteilen.
Was für ein XML setzt Du ein, welches mehrere <body>-Elemente erlaubt und Anführungszeichen um Attributwerte nicht zwingend erfordert? Wenn das <body>-Element nur einmal ausgegeben würde, wäre mein Tipp HTML.
Stimmt wohl auch, kümmer ich mich aber erst später drum.
Dein Problem ist perlspezifisch, nicht CGI-spezifisch. Du brauchst kein HTTP, Du brauchst kein HTML. Löse das Problem zunächst lokal auf Deinem Rechner, durch schlichte print-Ausgaben, ohne unnützen Overhead, ohne Behelligung eines HTTP-Servers.
Stelle diesen Mangel ab, sowie die Dir darauf hin genannten Fehler.
Auch wieder richtig. Nur leider funktioniert das Ganze dann nicht mehr.
Die heutige Aufschrift meines T-Shirts lautet passenderweise: "Funktioniert nicht" funktioniert nicht. Außerdem habe ich ja gesagt, dass Dir daraufhin Fehler genannt werden - das ist der Zweck der Aktion.
Da ich (noch) zu wenig Ahnung von Perl habe, wollte ich es erstmal so zum Laufen kriegen.
Erst mal Fehler reinzustopfen und die später zu suchen ist der weitaus aufwändigere Weg. Mache es gleich richtig.
Cheatah