Chris Weber: Problem mit Skalaren, Arrays, Schleifen, etc...

Hallo,

Ich versuche gerade ein Script zu schreiben das folgendes tut:

1. Aus einer Textdatei werden eine Reihe von Datansaetzen gelesen,
   die wie folgt geordnet sind:

100000001ein beliebiger text1999
   100000002ein anderer text1998

usw.

2. Aus jedem der Datensaetze sollen die ""s entfernt werden und für
   jeden Teil eines Datensatzes soll ein bestimmtes HTML-Element
   geprintet werden.

3. Der vom Perl-Script erzeugte HTML-Code sollte in etwa so aussehen:

<html>
   ...
   ...
   <table>
   <tr><td>100000001<br>ein beliebiger text<br><br>1999</td></tr>

<tr><td>100000002<br>ein anderer text<br><br>1998</td></tr>
   </table>
   ...
   ...

Kann mir vielleicht jemand von Euch helfen, ich hab' wirklich keinen Plan, wie ich das machen soll..

Danke im Vorraus
Chris

  1. Hallo,

    Ich versuche gerade ein Script zu schreiben das folgendes tut:
    Kann mir vielleicht jemand von Euch helfen, ich hab' wirklich keinen Plan, wie ich das machen soll..

    ja, da ist Hilfe möglich: SELFHTML lesen, die Kapitel zu perl, da ist genau das ziemlich ausreichend beschrieben.

    Gruß

    Christoph S.

    1. Hi,

      ja, da ist Hilfe möglich: SELFHTML lesen, die Kapitel zu perl, da ist genau das ziemlich ausreichend beschrieben.

      man möge mir verzeihen: SelfHTML ist eine hervorragende Sache, aber gerade in Bezug auf Perl sollte man möglichst die Finger davon lassen. Da hat Stefan noch einiges in Richtung Perl 5 aufzuholen ;-)

      Statt dessen sollte man sich _eingehend_ mit der bei Perl mitgelieferten Dokumentation beschäftigen. Startpunkte sind z.B.:

      perldoc perldoc
      perldoc perl
      perldoc CGI

      und bezogen auf den aktuellen Fall:

      perldoc -f split

      Regular Expressions (perldoc perlre), wie Timothy sie vorschlägt, gehen hier zwar auch, sind aber ziemlich overdone. Mit split(//, $zeile) erhält man sehr leicht ein Array, dessen Elemente man mit Hilfe von CGI.pm ausgeben kann:

      #!/usr/bin/perl -w
      use strict;
      use CGI qw(:standard *table);
      my $line = '100000001ein beliebiger text1999';
      print header, start_html('Testausgabe'), start_table;
      print start_tr;
      foreach (split(//, $line)) { print td($_); }
      print end_tr;
      print end_table, end_html;

      Cheatah

      1. man möge mir verzeihen: SelfHTML ist eine hervorragende Sache, aber gerade in Bezug auf Perl sollte man möglichst die Finger davon lassen. Da hat Stefan noch einiges in Richtung Perl 5 aufzuholen ;-)

        Statt dessen sollte man sich _eingehend_ mit der bei Perl mitgelieferten Dokumentation beschäftigen. Startpunkte sind z.B.:

        perldoc perldoc
        perldoc perl
        perldoc CGI

        und bezogen auf den aktuellen Fall:

        perldoc -f split

        völlig richtig ;-) Allerdings: was die perl-Kapitel in SELFHTML leisten, ist zumindest eines  -  man lernt zu fragen. Und man bekommt wenigstens den ersten Schritt mit, für den zweiten reichts schon nicht mehr. Mir schien es hier so, daß es eben auf diesen "ersten Schritt" noch ankam.

        Christoph S.

        1. Hi,

          man möge mir verzeihen: SelfHTML ist eine hervorragende Sache, aber gerade in Bezug auf Perl sollte man möglichst die Finger davon lassen. Da hat Stefan noch einiges in Richtung Perl 5 aufzuholen ;-)

          [...]

          völlig richtig ;-) Allerdings: was die perl-Kapitel in SELFHTML leisten, ist zumindest eines  -  man lernt zu fragen. Und man bekommt wenigstens den ersten Schritt mit, für den zweiten reichts schon nicht mehr. Mir schien es hier so, daß es eben auf diesen "ersten Schritt" noch ankam.

          tja, nur muß man den Leuten dann immer wieder die SelfHTML-Formularauswertung abgewöhnen und ihnen beibringen, daß use CGI qw(:standard); und param() deutlich besser sind :-)

          Vielleicht sollte jemand mal einen SelfAktuell-Artikel über CGI.pm schreiben... Oops, war das jetzt 'ne Freiwilligenmeldung? :-)

          Chea "Mist aber auch! *g*" tah, im Moment aber wenig Zeit dafür habend

    1. Aus einer Textdatei werden eine Reihe von Datansaetzen gelesen,
         die wie folgt geordnet sind:

    100000001ein beliebiger text1999
       100000002ein anderer text1998

    usw.

    1. Aus jedem der Datensaetze sollen die ""s entfernt werden und für
         jeden Teil eines Datensatzes soll ein bestimmtes HTML-Element
         geprintet werden.

    2. Der vom Perl-Script erzeugte HTML-Code sollte in etwa so aussehen:

    <html>
       ...
       ...
       <table>
       <tr><td>100000001
    ein beliebiger text

    1999</td></tr>

    <tr><td>100000002
    ein anderer text

    1998</td></tr>
       </table>
       ...

    Hi,

    mit nachfolgendem Code kannst Du die einzelnen Teile extrahieren (stehen in $1, $2, $3). Damit kannst Du dann mit print-Anweisungen Deine Seite generieren.

    open DATEI ,"d:/temp/dat";

    while ($inp=<DATEI>){
       $inp=~ /(.*)(.*)(.*)/;
       #in $1 $2 $3 steht dann z.B.  100000002   ein Text  1999
    }

    close DATEI;

    Gruß
    Timothy