gary: Anker als Zahl?

Abend Community,

Ich möchte gerne Links via Perl automatisch generieren lassen. Das ist schon mal kein Problem. Diese dynamischen Links sind aber sog. Anker-Links. Das heisst in dem shtml-Code muss dann logischer weise zu jedem Link ein Anker eingebaut werden:

<a name="Ankername">[Inhalt]</a>

Und da geht eigentlich die Schwierigkeit los: Laut selfhtml _muss_ ein Anker mit einem Buchstaben beginnen. Baue ich also Anker per Perl ein, muss auch der Ankername passend eingefügt werden (SSI). Ich hätte gerne eine Zahl genommen die automatisch hochzählt:

Perl:

$counter = 0
und in der Schleife dann:
$counter = $counter + 1

Einfach <a name="$counter">[Inhalt]</a> im shtml-code geht ja dann nicht.
Wie kann man einen permanenten Buchstaben dazupacken in die Richtung:

<a name="A$counter">[Inhalt]</a>

damit das dann im shtml so aussieht:

<a name="A1">[Inhalt]</a> (wenn $counter gerade 1 ist)

Ich hoffe man versteht was ich meine.

Viele Grüsse gary

  1. Hi,

    Perl:

    $counter = 0
    und in der Schleife dann:
    $counter = $counter + 1

    <a name="$counter">[Inhalt]</a>

    Wie erzeugst du denn diesen Code? Das '<a name="' und '>[Inhalt]</a>' musst du ja auch irgendwie um $counter herum bringen. Dann kannst du ja einfach noch ein Prefix für den Anker dazupacken.

    <a name="A$counter">[Inhalt]</a>

    Dafür gibt es verschiedene Möglichkeiten:

    • qq()
    • Stringverkettung mit .
    • Einfache Ausgabe in " (doppelten Anführungszeichen), dann musst du aber die ", die ausgegeben werden sollen mit \ (Backslash) maskieren.

    Ich hoffe man versteht was ich meine.

    Ich bin mir nicht ganz sicher. Das kling fast ein bisschen zu einfach.
    Du schreibst nirgends, wie du den HTML-Code ausgibst. Wahrscheinlich mit print? Oder ist das bei SSI anders? Damit hab ich mich nämlich noch nie wirklich befasst.

    mfG,
    steckl

    1. Hi Steckl,

      Ja tschuldigung *g*

      Habe eine .shtml Seite, die per SSI ein Perlscript ausführt, welches dann mit dem Print-Befehl den frisch erzeugten Html-Code in die Shtml- Seite einfügt und komplett an den Client schickt.

      Im Quelltext der Html-Seite habe ich nun als Endergebnis an relevanter Stelle das stehen:

      <a id="1"></a>

      Jetzt suche ich schlicht nach der Möglichkeit einen Verweis zu der oberen id zu schreiben. Und ich habe nochmals die Selfhtml Doku durchkramt. Verweise jede Menge- aber keiner zu einem id-Anker :-(

      Grüsse gary

      1. Hi,

        <a id="1"></a>

        Zitat aus Selfhtml:

        ID, IDREF oder Name

        Der Wert eines solchen Attributs _MUSS_ mit einem Buchstaben A-Z oder a-z beginnen, und darf in der weiteren Zeichenkette ebenfalls nur Buchstaben A-Z und a-z, Ziffern 0-9, Bindestriche (-), Unterstriche (_), Doppelpunkte (:) und Punkte (.) enthalten. Nicht erlaubt sind Sonderzeichen, Leerzeichen oder andere Interpunktionszeichen.

        Jetzt suche ich schlicht nach der Möglichkeit einen Verweis zu der oberen id zu schreiben. Und ich habe nochmals die Selfhtml Doku durchkramt. Verweise jede Menge- aber keiner zu einem id-Anker :-(

        Man kann Anker über eine id genauso wie über name anspringen:
        http://www.google.de/search?q=anker+ziel+auf+id&spell=1#sd (sd ist eine id und kein name)

        mfG,
        steckl

        1. Abend Steckl,

          Ich habe es jetzt nach der offiziellen Methode gemacht (Buchstabe und Zahl verkettet). Vielen Dank für die Lösung.

          Jetzt habe ich das Problem, das die automatisch generierten Links nicht auf der WC-Papierrolle erscheinen. Es ist mir nur Möglich, die Links im Html-Code zu verteilen. Eine Liste, so wie oben im Quellcode der Seite, kann ich aus technischen Gründen nicht generieren.

          Kann man Links, die im Quellcode verteilt sind, via CSS alle an einem Ort (WC-Papierrolle) anzeigen lassen?

          http://www.vam-shop.com/online-journal-ceta.shtml

          Der Link "rauchen.txt" soll auf das Klopapier. So wie der Link im Quelltext notiert ist, geht es pro Klasse durch das ganze Dokument. Alle sollten ich auf der Rolle einreihen...

          *kopfrauchend*

          Gruss gary

          1. Jetzt habe ich das Problem, das die automatisch generierten Links nicht auf der WC-Papierrolle erscheinen. Es ist mir nur Möglich, die Links im Html-Code zu verteilen. Eine Liste, so wie oben im Quellcode der Seite, kann ich aus technischen Gründen nicht generieren.

            Kann man Links, die im Quellcode verteilt sind, via CSS alle an einem Ort (WC-Papierrolle) anzeigen lassen?

            Nein, für solche Sachen gibt es z.b. HTML::Template, du bist gerade dabei das Rad zu erfinden, besser ist es Radfahren zu lernen.

            Struppi.

            1. Einen hab ich noch - dann gehe ich schlafen *g*,

              du bist gerade dabei das Rad zu erfinden, besser ist es Radfahren zu lernen.

              Mag sein, aber dann weiss ich immer noch nicht, wie man so ein Rad selber baut *g*

              So, zum Abschluss wie versprochen noch eine Gute Nacht- Frage:

              Ich habe also die Seite soweit, dass ich nur noch Berichte und Fotos hochladen muss, und in der publisher-Datei das Layout mittels eines einfachen Buchstabens festlegen kann (L/R/O/U).

              Die ganze Page baut sich dann selber zusammen und kreiert auch die passenden Links dazu selber! Wow - echt cool- da kann der Webdesigner glatt Urlaub machen, da Perl alles erledigt *ggg*

              Ne, jetzt Spass beiseite: Was noch nicht so ganz funktioniert, sind die Ankersprünge. Liegt das vielleicht, daran, dass diese "Leere"-Anker sind?

              Wenn mir das noch einer erklären könnte, warum die nicht richtig springen, wäre das wirklich klasse.

              Aber heute nicht mehr. Gehe jetzt schlafen. Bis Morgen...

              Gute Nacht Jon-boy, Gute Nacht selfhtml, Gute Nacht Deutschland...

              1. du bist gerade dabei das Rad zu erfinden, besser ist es Radfahren zu lernen.

                Mag sein, aber dann weiss ich immer noch nicht, wie man so ein Rad selber baut *g*

                Das Rad ist eine der älteste Erfindungen der Menschheit. Dein Code bewegt sich auf einer Perl-Zeitlinie ungefähr dort, Module sind Karren. Es gibt für Perl aber auch bequeme Fortbewegungsmittel.

                Du kannst doch PHP? Da sind ja halt unzählige Module fest integriert (was Vorteile und auch Nachteile hat), jede Programmiersprache lebt von Ihren Modulen oder Bibliotheken.

                Darüber hinaus gibt es teilweise über jahrzehnte bewährte Techniken, die das Entwicklen von Pogrammen erleichtern. Eine davon ist z.b. das Logik und Präsentation, also der Code und das HTML getrennt werden sollten (ähnlich wie bei HTML und CSS). Das ist z.b. ein Kritikpunkt von vielen an PHP, da dort das gegenteil passiert ist. Und was haben die Leute gemacht? Sie haben PHP Templatesystem entwickelt, was bei PHP etwas überflüssig ist, da PHP eigentlich ein Templatesystem ist. Aber daran merkst du, wie wichtig es vielen Leuten war z.b. Smarty, zu entwickeln, da diese Arbeitsweise für sie viele Vorteile hat.

                Früher oder später wird dir das auch auffallen, aber momentan arbeitest du lieber noch mit Feuersteinen.

                Übrigens, ich weiß nicht ob du endlich mal eine lokale WAMP Installation hast, aber bei Perl ist eine sehr informative und umfangreiche Dokumentation dabei, die dabei hilft solche Anfängerfehler zu überwinden. Sie ist sowohl als Konsolenprogramm perldoc, wie auch als HTML Dateien (im Ordner %Perlverzeichnis%/html) oder Online vorhanden.

                Struppi.

                1. Morgen Struppi :-)

                  Danke nochmalsfür deine Ausführungen. (Bis auf die Aussage mit meinem Perl-Code, der sich erheblich gewandelt hat und den du komplett in seiner neuen Fassung noch gar nicht kennst *g*)

                  Das sagt mir aber immer noch nicht, warum der Erste Anker geht, die anderen aber nicht, obwohl alle identisch sind?

                  Gruss gary

                  1. ... (Bis auf die Aussage mit meinem Perl-Code, der sich erheblich gewandelt hat und den du komplett in seiner neuen Fassung noch gar nicht kennst *g*)

                    Du meinst den https://forum.selfhtml.org/?t=172060&m=1126994? Da trifft meine Aussage auf jeden Fall zu.

                    Struppi.

                    1. Hi Struppi,

                      Du meinst den https://forum.selfhtml.org/?t=172060&m=1126994? Da trifft meine Aussage auf jeden Fall zu.

                      Nein! Ich meine diesen Hi-Tech-Code:

                      #!/usr/bin/perl -w

                      ###############################################################################

                      DecisionMaker:                   Version 1.00                               #

                      Developed started in:            22.05.2008                                 #

                      Finished in:                     XX.XX.2008                                 #

                      Programmed by:                   Gary-Technologies                          #

                      ###############################################################################

                      $counter = 0;
                      my $Layout1;
                      my $Thema;
                      my $Bild;
                      my @LinkCollect;
                      open(LESER, "<public/publisher.csv");
                      flock(LESER, LOCK_SH);

                      print "Content-type: text/html\n\n";

                      while(! eof(LESER)){

                      $counter = $counter + 1;

                      my $zeile = <LESER>;
                      my ($Layout1, $Thema, $Bild) = split(/,/,$zeile);
                      push (@LinkCollect, $Thema);

                      if($Layout1 eq "L") {
                      print "<!-- ############################### -->\n";
                      print "<!-- #Das ist die Klasse Text Links# -->\n";
                      print "<!-- ############################### -->\n";
                      print "\n";
                      print '<a name="A'. "$counter", '"></a>', "\n";
                      print '<div class="inner_left_links">',"\n";
                      print '<p class="report">';
                      open(INHALT, "<../httpdocs/sammler/artikel_text/$Thema");
                      flock(INHALT, LOCK_SH);
                      $insert = <INHALT>;
                      close(INHALT);
                      print $insert;
                      print "</p>\n";
                      print "</div>\n";
                      print '<div class="inner_right_links">',"\n";
                      print '<img src="sammler/artikel_pics/';
                      print $Bild;
                      print '" alt="">',"\n";
                      print "</div>\n";
                      print '<div class="big_line">',"\n";
                      print "</div>\n";
                      }

                      if($Layout1 eq "R") {
                      print "<!-- ################################ -->\n";
                      print "<!-- #Das ist die Klasse Text Rechts# -->\n";
                      print "<!-- ################################ -->\n";
                      print "\n";
                      print '<a name="A'. "$counter", '"></a>', "\n";
                      print '<div class="inner_left_rechts">',"\n";
                      print '<img src="sammler/artikel_pics/';
                      print $Bild;
                      print '" alt="">',"\n";
                      print "</div>\n";
                      print '<div class="inner_right_rechts">',"\n";
                      print '<p class="report">';
                      open(INHALT, "<../httpdocs/sammler/artikel_text/$Thema");
                      flock(INHALT, LOCK_SH);
                      $insert = <INHALT>;
                      close(INHALT);
                      print $insert;
                      print "</p>\n";
                      print "</div>\n";
                      print '<div class="big_line">',"\n";
                      print "</div>\n";
                      }

                      if($Layout1 eq "O") {
                      print "<!-- ############################## -->\n";
                      print "<!-- #Das ist die Klasse Text Oben# -->\n";
                      print "<!-- ############################## -->\n";
                      print "\n";
                      print '<a name="A'. "$counter", '"></a>', "\n";
                      print '<div class="inner_up_oben">',"\n";
                      print '<p class="report">';
                      open(INHALT, "<../httpdocs/sammler/artikel_text/$Thema");
                      flock(INHALT, LOCK_SH);
                      $insert = <INHALT>;
                      close(INHALT);
                      print $insert;
                      print "</p>\n";
                      print "</div>\n";
                      print '<div class="inner_down_oben">',"\n";
                      print '<img src="sammler/artikel_pics/';
                      print $Bild;
                      print '" alt="">',"\n";
                      print "</div>\n";
                      print '<div class="big_line">',"\n";
                      print "</div>\n";
                      }

                      if($Layout1 eq "U") {
                      print "<!-- ############################### -->\n";
                      print "<!-- #Das ist die Klasse Text Unten# -->\n";
                      print "<!-- ############################### -->\n";
                      print "\n";
                      print '<a name="A'. "$counter", '"></a>', "\n";
                      print '<div class="inner_up_unten">',"\n";
                      print '<img src="sammler/artikel_pics/';
                      print $Bild;
                      print '" alt="">',"\n";
                      print "</div>\n";
                      print '<div class="inner_down_unten">',"\n";
                      print '<p class="report">';
                      open(INHALT, "<../httpdocs/sammler/artikel_text/$Thema");
                      flock(INHALT, LOCK_SH);
                      $insert = <INHALT>;
                      close(INHALT);
                      print $insert;
                      print "</p>\n";
                      print "</div>\n";
                      print '<div class="big_line">',"\n";
                      print "</div>\n";
                      }

                      }

                      close(LESER);

                      print '<div class="wc_body">',"\n";
                      print "<ul>\n";

                      $i = 0;

                      foreach $LinkCollect (@LinkCollect) {
                      $i = $i+1;
                      print '<li><a href="#A'. "$i", '">', "$LinkCollect", "</a></li>\n";
                      }

                      print "</ul>\n";
                      print "</div>\n";

                      Und, nur zu Errinnerung *quengel*: Was ist jetzt mit dem dofen Anker? Ich habe die Selftinfos betreffend Verweise und Anker schon mehrmals durch.

                      Viele, liebe, herzliche *einschleim-bitte-bitte* Grüsse Gary ;-)

                      1. Hi Struppi,

                        Du meinst den https://forum.selfhtml.org/?t=172060&m=1126994? Da trifft meine Aussage auf jeden Fall zu.

                        Nein! Ich meine diesen Hi-Tech-Code:

                        #!/usr/bin/perl -w

                        SÜNDE nr 1

                        use strict; # nicht vorhanden,

                        ###############################################################################

                        DecisionMaker:                   Version 1.00                               #

                        Developed started in:            22.05.2008                                 #

                        Finished in:                     XX.XX.2008                                 #

                        Programmed by:                   Gary-Technologies                          #

                        ###############################################################################

                        SÜNDE nr 2

                        header Info ohne reale Funktion

                        $counter = 0;

                        SÜNDE nr 3

                        use strict hätte auf fehlende my erklärung hingewiesen

                        Variablen im Packege main sollte man $Globale_Variable beschriften

                        um sie in Subfunktionen als globale Variablen zu erkennen

                        my $Counter = 0

                        my $Layout1;
                        my $Thema;
                        my $Bild;
                        my @LinkCollect;
                        open(LESER, "<public/publisher.csv");

                        SÜNDE nr 4

                        open mit 2 statt mit drei Variablen

                        besser: $fh statt FH für Filehandles

                        open(my $fh, "<", $file)

                        SÜNDE nr 5

                        kein Error-Handling auf open.

                        Das weitere Parsen wurde wegen zu viel _Moderne_ abgebrochen.

                        mfg Beat

                        --
                        Selber klauen ist schöner!
                        1. Hi Beat,

                          SÜNDE nr 2

                          header Info ohne reale Funktion

                          PillePalle: In einem REM-Bereich kann ich reinschreiben was ich möchte!

                          SÜNDE nr 5

                          kein Error-Handling auf open.

                          Das liegt daran, das es kein Errorfall gibt. Wo kein Error-Auch keine Errorbehandlung ;-)

                          Die anderen Sünden werden nach und nach bearbeitet. Das ändert aber doch nichts an einem Validen Html Code.

                          http://www.vam-shop.com/online-journal-ceta.shtml

                          Die ersten beiden Marken werden je ganz an die Screen-Oberseite gescrollt, die unteren beiden Links hingegen nicht. Validator für html sowie css geben grünes Licht. Muss ein Anker nicht an die Browserfenster-Oberseite Scrollen?

                          *oh gott oh gott*

                          PS.: Ich habe den Sportbooteführerschein, dort war das mit dem Ankern viiieeeel einfacher *tztz*

                          Grüsse gary

                          1. Yerf!

                            Die ersten beiden Marken werden je ganz an die Screen-Oberseite gescrollt, die unteren beiden Links hingegen nicht. Validator für html sowie css geben grünes Licht. Muss ein Anker nicht an die Browserfenster-Oberseite Scrollen?

                            Works as designed... der Browser kann eben nicht weiter nach unten scrollen, als bis zum Dokument-Ende.

                            Oder versuch doch mal von Hand soweit zu scrollen, das der Link am oberen Fensterrand ist ;-)

                            Gruß,

                            Harlequin

                            --
                            <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
                            1. Hi Harlequin,

                              Die ersten beiden Marken werden je ganz an die Screen-Oberseite gescrollt, die unteren beiden Links hingegen nicht. Validator für html sowie css geben grünes Licht. Muss ein Anker nicht an die Browserfenster-Oberseite Scrollen?

                              Works as designed... der Browser kann eben nicht weiter nach unten scrollen, als bis zum Dokument-Ende.

                              Oder versuch doch mal von Hand soweit zu scrollen, das der Link am oberen Fensterrand ist ;-)

                              Ooooohhhhh mmmaaaaannnn! Das darf nicht wahr sein...

                              Ha ja, du hast recht. Mehr geht ja gar nicht *gmpf*

                              Wie war das mit dem Wald und den Bäumen, tztz

                              Grüsse gary

                          2. Hallo gary!

                            Das liegt daran, das es kein Errorfall gibt. Wo kein Error-Auch keine Errorbehandlung ;-)

                            Du hast Dich nie vertippt?

                            Viele Grüße aus Frankfurt/Main,
                            Patrick

                            --

                            _ - jenseits vom delirium - _
                            [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
                            Nichts ist unmöglich? Doch!
                            Heute schon gegökt?
                      2. Hallo gary!

                        Hi Struppi,

                        Du meinst den https://forum.selfhtml.org/?t=172060&m=1126994? Da trifft meine Aussage auf jeden Fall zu.

                        Nein! Ich meine diesen Hi-Tech-Code:

                        Zu den HighTech-Sünden hat sich bereits Beat geäußert. Zu der Seite:

                        Du hast immer noch die BOM drin.

                        Warum so viele div-Elemente? Die Liste kannst Du direkt formatieren, die p-Elemente auch.

                        Und, nur zu Errinnerung *quengel*: Was ist jetzt mit dem dofen Anker?

                        Du erzeugst sinnfreie a-Elemente, wobei Dir schon mal geraten wurde, zu ID zu greifen:

                        <p id="a3" class="report">Strom ist teuer und wird noch teuerer! ...</p>

                        Und Du Dich vom a-Element nicht trennen willst, dann wenigstens keine leere erzeugen:

                        <p class="report"><a name="a3">Strom</a> ist teuer und wird noch teuerer!

                        Viele Grüße aus Frankfurt/Main,
                        Patrick

                        --

                        _ - jenseits vom delirium - _
                        [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
                        Nichts ist unmöglich? Doch!
                        Heute schon gegökt?
                      3. Nein! Ich meine diesen Hi-Tech-Code:

                        So sieht Code aus, der aus der Perl Steinzeit stammt.

                        #!/usr/bin/perl -w

                        übrigens auch wenn der Schalter -w gut ist, ist der Gefährlich, wenn man die Warnungen nicht irgendwo abfängt, denn RückZuck haste einen 500'er Fehler und damit kennst dich ja aus.

                        open(LESER, "<public/publisher.csv");

                        Dass du so sicher bist, dass die Datei immer an dieser Stelle ist, von einem anderen Programm gelöscht wurde ... usw. Es sind nur wenige Zeilen um dein Progamm robuster zu machen.

                        while(! eof(LESER)){

                        $counter = $counter + 1;

                        my $zeile = <LESER>;
                        my ($Layout1, $Thema, $Bild) = split(/,/,$zeile);
                        push (@LinkCollect, $Thema);

                        Da hab ich schon meinen Kommentar zu abgelassen. while !eof ist herrlich nostalgisch, ich kenn das wirklich nur noch aus BASIC Zeiten.

                        if($Layout1 eq "L") {
                        print "<!-- ############################### -->\n";
                        print "<!-- #Das ist die Klasse Text Links# -->\n";
                        print "<!-- ############################### -->\n";
                        print "\n";
                        print '<a name="A'. "$counter", '"></a>', "\n";
                        print '<div class="inner_left_links">',"\n";
                        print '<p class="report">';

                        und du findest solchen Quellcode leserlich?
                        Wie schon anderweitig erwähnt, viele Programmierer sind in jahrlanger Erfahrung dahinter gekommen, dass es besser/schöner/praktischer ist, HTML und Code zu trennen.

                        open(INHALT, "<../httpdocs/sammler/artikel_text/$Thema");

                        Hier wird sicher nie was gelöscht und in $Thema steht für immer und ewig der richtige Wert. Ich kann die jetzt schon prophezeien du wirst noch viel zu tun haben mit deinem Skript.

                        flock(INHALT, LOCK_SH);
                        $insert = <INHALT>;

                        Es darf nur ein Zeile n der Datei stehen? Ich dachte du hast File::Slurp schon gefunden (oder die von Sichfred verlinkte FAQ gelesen?)

                        print $insert;
                        print "</p>\n";
                        print "</div>\n";
                        print '<div class="inner_right_links">',"\n";
                        print '<img src="sammler/artikel_pics/';
                        print $Bild;
                        print '" alt="">',"\n";
                        print "</div>\n";
                        print '<div class="big_line">',"\n";
                        print "</div>\n";
                        }

                        Wirklich, das tut weh.
                        Wenn du weiterhin sicher bist, das Programm auf dem Level zu halten, dann mach nutz doch wenigstens die Möglichkeiten die Perl dir anbietet um sowas leserlich zu gestalten:

                        z.b. so:

                        print qq[ <p>$insert</p>  
                        <img src="sammler/artikel_pics/$Bild" alt="">  
                        ];
                        

                        Dein HTML Code mutiert übrigens immer mehr zu einer DIV suppe, wozu ist DIV mit der Klassen 'big_line' gut? Die ganze Struktur ist seltsam, aber das sagte ich ja schon mehrmals.

                        Du siehst aber schon in den Ansätzen das Problem, dass du früher oder später lösen werden musst. Du hast Blöcke, die sich im Prinzip immer wieder wiederholen, jeder macht das Gleiche, Parameter vergleichen, Datei öffnen, lesen, HTML Code ausgeben. Der nächste Schritt wären Funktion die das automatisieren, der übernächste sind dann Module. Zuerst Eigene und dann wirst du irgendwann merken, es gibt da draussen tausende Leute die das gleiche schon mal gemacht haben und oft besser sind als du oder ich und von denen du die Lösung für all die Probleme, die du dir jetzt auftürmst, bekommst.

                        Struppi.

                        1. Hi Struppi,

                          Dass du so sicher bist, dass die Datei immer an dieser Stelle ist, von einem anderen Programm gelöscht wurde ... usw. Es sind nur wenige Zeilen um dein Progamm robuster zu machen.

                          Ich weiss, die or die-Geschichte.

                          Da hab ich schon meinen Kommentar zu abgelassen. while !eof ist herrlich nostalgisch, ich kenn das wirklich nur noch aus BASIC Zeiten.

                          Dieser Syntax ist der einzige, der <grins> "bei meinem Perl" </grins> arbeitet.

                          if($Layout1 eq "L") {
                          print "<!-- ############################### -->\n";
                          print "<!-- #Das ist die Klasse Text Links# -->\n";
                          print "<!-- ############################### -->\n";
                          print "\n";
                          print '<a name="A'. "$counter", '"></a>', "\n";
                          print '<div class="inner_left_links">',"\n";
                          print '<p class="report">';

                          und du findest solchen Quellcode leserlich?
                          Wie schon anderweitig erwähnt, viele Programmierer sind in jahrlanger Erfahrung dahinter gekommen, dass es besser/schöner/praktischer ist, HTML und Code zu trennen.

                          Da stimme ich dir zu. Da es aber mein _erstes_ Perlprogramm ist, bin ich erstmal wirklich froh, das es funktioniert. Es ist für mich schon schwierig, diese Funktionen zu überschauen. Wenn ich jetzt den Html-generierten Teil auslager, wird das ganze noch abstrakter. Ich baue quasi so, wie ich es nacher im Html-Code haben will, alles nach und nach zusammen. Reihenfolge ist für mich noch als Richtschnurr wichtig. Ohne komplizierte jumps und Subroutinen...

                          Hier wird sicher nie was gelöscht und in $Thema steht für immer und ewig der richtige Wert. Ich kann die jetzt schon prophezeien du wirst noch viel zu tun haben mit deinem Skript.

                          Hier wird immer gelöscht und geändert. Das Datenfeld $Thema ist aber immer im selben Format.

                          Es darf nur ein Zeile n der Datei stehen? Ich dachte du hast File::Slurp schon gefunden (oder die von Sichfred verlinkte FAQ gelesen?)

                          Ja, dieses open liest den eigentlichen Bericht ein. Und der muss momentan noch als einzeiler in einem Texteditor geschrieben werden und in utf-8 gespeichert werden. Gut wäre, wenn diese txt-Datei auch Umbrüche enthalten könnte wäre beim Verfassen übersichtlicher). Nur müsste man diese dann bevor sie in $insert gegeben wird wieder entfernen.

                          print $insert;
                          print "</p>\n";
                          print "</div>\n";
                          print '<div class="inner_right_links">',"\n";
                          print '<img src="sammler/artikel_pics/';
                          print $Bild;
                          print '" alt="">',"\n";
                          print "</div>\n";
                          print '<div class="big_line">',"\n";
                          print "</div>\n";
                          }

                          »

                          Wirklich, das tut weh.

                          Funktionier aber. Ausserdem ist das die Variante, die ich verstanden habe und anwenden kann.

                          [...] wozu ist DIV mit der Klassen 'big_line' gut?

                          Die erstellt eine "big_line" gestrichelter Art unter die beiden Div-Container (linkes und rechtes Div). Das muss so sein, damit das Layout beim Vergrössern und Verkleinern nicht zerspringt. In dem Fall würde ohne die Big-line das Autobild beim verkleinern unter das Zigarettenbild springen, weil ja dort eine Lücke entsteht, besonders wenn der Zigarettentext länger wird. Die Big-Line erlaubt verschieden grosse Bilder und verschieden lange Texte bei gleichzeitigem Layouterhalt.
                          Trick 17 sozusagen *g*

                          Die ganze Struktur ist seltsam, aber das sagte ich ja schon mehrmals.

                          Ne, die muss so sein, wegen der dynamischen Erstellung des Inhalts.

                          Natürlich werde ich irgendwann in der Lage sein Module zu nutzen. Nur mal ehrlich: Für das erste eigene PerlScript (gut mit selfhtml-hilfe), ist das Ergebnis doch erstaunlich. Perl fängt an mir immer mehr zu gefallen.

                          Grüsse gary

                          PS.: Du hattest irgendwo nach PHP gefragt: Nein, ich kann kein PHP ;-)

                          1. PS.: Du hattest irgendwo nach PHP gefragt: Nein, ich kann kein PHP ;-)

                            Du programmierst in Perl, als sei es PHP,
                            Und das tut sicher nicht nur Struppi weh.

                            Siechfred

                            --
                            Hinter den Kulissen passiert viel mehr, als man denkt, aber meistens nicht das, was man denkt.
                            1. Du programmierst in Perl, als sei es PHP,
                              Und das tut sicher nicht nur Struppi weh.

                              Ach ihr kranken Leutz [1], auf der Packungsbeilage zu Perl und PHP stand ausdrücklich: von kleinen Kindern fernhalten und nicht einnehmen!

                              [1] davon war kürzlich die Rede.

                              mfg Beat

                              --
                              Selber klauen ist schöner!
                            2. Hallo Siechfred!

                              Du programmierst in Perl, als sei es PHP,
                              Und das tut sicher nicht nur Struppi weh.

                              Ach, irgendwie erinnert mich das an meine erste Begegnung mit Perl, das war Herbst 1999, und ich hatte vor mir... Matt Wrights wwwboard und machte daraus... die SELF-Visitenkarten - die damals einschlugen, wie eine Bombe!

                              Viele Grüße aus Frankfurt/Main,
                              Patrick

                              --

                              _ - jenseits vom delirium - _
                              [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
                              Nichts ist unmöglich? Doch!
                              Heute schon gegökt?
                              1. Hallo.

                                die SELF-Visitenkarten - die damals einschlugen, wie eine Bombe!

                                Weißt du, ob bei den Visitenkarten Weiterentwicklungen geplant sind? Ich meine, dass davon schon einmal die Rede war, bin mir aber nicht sicher, in welchem Kreis das war.
                                MfG, at

                            3. Morgen Siechfred,

                              PS.: Du hattest irgendwo nach PHP gefragt: Nein, ich kann kein PHP ;-)

                              Du programmierst in Perl, als sei es PHP, [...]

                              Das impliziert ja, dass ich dann auch PHP kann? Toll, dass wusste ich noch gar nicht ;-)

                              *SCNR*

                              best regards gary

                              1. Mahlzeit gary,

                                Du programmierst in Perl, als sei es PHP, [...]

                                Das impliziert ja, dass ich dann auch PHP kann? Toll, dass wusste ich noch gar nicht ;-)

                                Wer programmieren kann, kann programmieren - dabei ist die Sprache egal. Ist so ähnlich wie beim Sprechen oder Schreiben: wer das Grundprinzip von Kommunikation verstanden hat, braucht nur noch die Vokabeln und die Grammatik einer beliebigen Sprache zu lernen und kann dann in dieser kommunizieren.

                                MfG,
                                EKKi

                                --
                                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
          2. Hi,

            Kann man Links, die im Quellcode verteilt sind, via CSS alle an einem Ort (WC-Papierrolle) anzeigen lassen?

            Du kannst sie positionieren, wie du lustig bist ...

            Der Link "rauchen.txt" soll auf das Klopapier. So wie der Link im Quelltext notiert ist, geht es pro Klasse durch das ganze Dokument. Alle sollten ich auf der Rolle einreihen...

            ... jedoch ist es ziemlich umständlich für jeden Link extra die Koordinaten zu bestimmen.
            Ich wüsste nicht wie man das vereinheitlichen kann, jedoch bin ich in Sachen CSS auch nicht gerade der fitteste.
            Aber ich weiß zumindest soviel, dass du die Links via CSS nicht an einer anderen Stelle im DOM einhängen kannst.

            Am einfachsten fände ich es , wenn du die komplette Seite mit einem Perl-Script generierst, dann kannst du die Links gleich da ausgeben, wo sie hingehören.

            Gute Nacht,
            $teckl++ ;)

  2. Ich hoffe man versteht was ich meine.

    print '<a name="A' , $counter , '">[Inhalt]</';

    oder du kannst dir die Schleife sparen:

    print '<a name="A' , ++$counter , '">[Inhalt]</';

    Aber warum nimmst du ein <a name=> element wenn es <x id=> ebenso tut?

    mfg Beat

    --
    Selber klauen ist schöner!
    1. Hi Beat,

      print '<a name="A' , ++$counter , '">[Inhalt]</';

      Wenn $counter gleich null ist, was passiert dann bei ++? gibt das 1?
      Oder muss bei der ++$counter Schreibweise der Anfangswert 1 sein?

      Aber warum nimmst du ein <a name=> element wenn es <x id=> ebenso tut?

      Cool, steht im Selfhtml weiter unten- habe es gerade gesehen.

      Also z. B. so:

      <a id="$counter"></a>

      Lehre Anker gehen ja auch. Im Selfhtml steht das ältere Browser da schwierigkeiten machen. Was bitte schön sind ältere Browser in dem Zusammenhang?

      Viele Grüsse gary

      1. Hallo gary!

        Wenn $counter gleich null ist, was passiert dann bei ++? gibt das 1?

        Ja.

        Oder muss bei der ++$counter Schreibweise der Anfangswert 1 sein?

        Vorsicht: es gibt einen Unterscheid zwischen $counter++ und ++$counter!

        Da Beat die Notation hier angeführt hat, überlasse ich es ihm, es Dir zu erklären ;)

        Viele Grüße aus Frankfurt/Main,
        Patrick

        --

        _ - jenseits vom delirium - _
        [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
        Nichts ist unmöglich? Doch!
        Heute schon gegökt?
        1. Hallo nochmal,

          Also der Einbau der id's per SSi funktioniert schon mal.
          Hier: http://www.vam-shop.com/online-journal-ceta.shtml

          Lasst euch nicht vom oberen Linkblock irritieren. Das ist nur ein Testüberbleibsel.

          Jetzt Butter bei die Fische:

          <a href="#NAME">Seitenanfang</a> <--- So sieht es normal aus, wenn NAME verwendet wird.

          Wie geht dass bei einer ID?

          Das habe ich im Selfhtml nicht gefunden :-(

          Grüsse Gary

          1. Hallo

            Jetzt Butter bei die Fische:

            <a href="#NAME">Seitenanfang</a> <--- So sieht es normal aus, wenn NAME verwendet wird.

            Wie geht dass bei einer ID?

            Genauso.

            Link: <a href="#id">zum Element mit der ID 'id' springen</a>

            Ziel: <h3 id="id">Überschrift mit der ID 'id'</h3>

            Tschö, Auge

            --
            Die deutschen Interessen werden am Liechtenstein verteidigt.
            Veranstaltungsdatenbank Vdb 0.2
      2. print '<a name="A' , ++$counter , '">[Inhalt]</';

        Wenn $counter gleich null ist, was passiert dann bei ++? gibt das 1?
        Oder muss bei der ++$counter Schreibweise der Anfangswert 1 sein?

        Nimm deinen Interpreter mit einem kleinen Script

          
        #!C:/Programme/Perl/bin/perl.exe -w  
        #  
        use strict;  
        use CGI::Carp qw(fatalsToBrowser);  
          
        BEGIN {  
         use CGI::Carp qw(carpout);  
         open(LOG, ">>error.txt")  or  die "Unable to append to error.txt: $!\n";  
         carpout(*LOG);  
        }  
          
        my $test = 0;  
        print ++$test, "\n";  
        $test = 0;  
        print $test++, "\n";  
          
        sleep(10);  
        exit;  
        __END__  
          
        
        

        Das ist seeehr lehrreich!

        Aber warum nimmst du ein <a name=> element wenn es <x id=> ebenso tut?

        Cool, steht im Selfhtml weiter unten- habe es gerade gesehen.

        Also z. B. so:

        <a id="$counter"></a>

        hm jeeein.
        Ich gehe davon aus, dass dein Text bereits in einem Element steht, und du diesem Element die id zuweisen kannst.

        Lehre Anker gehen ja auch.

        Lehre Anker sind ungut!

        mfg Beat

        --
        Selber klauen ist schöner!
  3. Hallo gary!

    $counter = 0
    und in der Schleife dann:
    $counter = $counter + 1

    Einfacher: $counter += 1;
    Noch einfacher: $counter++; (http://de.selfhtml.org/perl/sprache/operatoren.htm#berechnung);

    Wie kann man einen permanenten Buchstaben dazupacken in die Richtung:
    <a name="A$counter">[Inhalt]</a>

    Wie steckl schon erwähnte, There Is More Than One Way To Do It, von der hässlichsten bis zur gehtso:

    1.
    print "<a name="A$counter">Linktext</a>\n";

    2.
    print '<a name="A', $counter, '">Linktext</a>', "\n";

    3.
    print '<a name="A'.$counter.'">Linktext</a>'."\n";

    4.
    print qq~<a name="A$counter">Linktext</a>\n~;

    Abgesehen davon, würde ich <a id="A1"> schreiben, Browser die das nicht interpretieren gibt es kaum noch.

    Viele Grüße aus Frankfurt/Main,
    Patrick

    --

    _ - jenseits vom delirium - _
    [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
    Nichts ist unmöglich? Doch!
    Heute schon gegökt?
    1. Hi,

      Abgesehen davon, würde ich <a id="A1"> schreiben, Browser die das nicht interpretieren gibt es kaum noch.

      Warum überhaupt ein a-Element verwenden?
      Ohne href-Attribut ist es ja kein richtiger Link und es wäre dann wohl eher ein anderes Element als Anker-Ziel angebracht.

      mfG,
      steckl

      1. Hallo steckl!

        Warum überhaupt ein a-Element verwenden?
        Ohne href-Attribut ist es ja kein richtiger Link und es wäre dann wohl eher ein anderes Element als Anker-Ziel angebracht.

        Ein ++ für Dich ;)

        Viele Grüße aus Frankfurt/Main,
        Patrick

        --

        _ - jenseits vom delirium - _
        [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
        Nichts ist unmöglich? Doch!
        Heute schon gegökt?
        1. Hi,

          Ein ++ für Dich ;)

          $teckl++ oder ++$teckl? Dass das nicht das gleiche ist hast du ja gerade geschrieben. ;-)

          mfG,
          ($teckl+1)

          1. Hallo steckl!

            $teckl++ oder ++$teckl? Dass das nicht das gleiche ist hast du ja gerade geschrieben. ;-)

            $teckl++ natürlich. Ist ja ein Post-Inkrement ;)

            Viele Grüße aus Frankfurt/Main,
            Patrick

            --

            _ - jenseits vom delirium - _
            [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
            Nichts ist unmöglich? Doch!
            Heute schon gegökt?
  4. Hi,

    Und da geht eigentlich die Schwierigkeit los: Laut selfhtml _muss_ ein Anker mit einem Buchstaben beginnen.

    Nenne bitte die genaue Stelle, damit man den Fehler ordentlich melden kann.

    Das name-Attribut ist vom Typ CDATA, darf also durchaus mit einer Ziffer beginnen.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hi,

      Sorry es steht _sollte_

      Link: http://de.selfhtml.org/html/verweise/projektintern.htm#anker

      Textpassage:
      Wahl eines geeigneten Ankernamens

      Den Ankernamen können Sie frei vergeben. Vergeben Sie möglichst kurze, aber prägnante und lesbare Namen. Sie sollten im Ankernamen lediglich die lateinischen Buchstaben, die arabischen Ziffern sowie als Sonderzeichen höchstens den Unterstrich (_), den Bindestrich (-) und den Punkt (.) benutzen. Als erstes Zeichen des Namens sollten Sie einen Buchstaben wählen.
                                     ^
                                     hier

      gruss gary

  5. Hallo nochmal,

    Also, das Ankerproblem ist jetzt erledigt. Habe es online. Bleibt noch die Linkgeschichte *voll-denk-grübel*.
    Wenn' Probleme gibt halte ich es wie Schwarzenegger: "I'll be back!" *ggg*

    gruss gary

  6. Hallo nochmals an _alle_ Helfer,

    Vielen, vielen Dank, für die zahlreichen Antworten. Wenn ich alle berücksichtigen werde, bin ich noch ne Woch beschäftigt. Danke auch an Harlequin, für den Hinweis: "Seite zu Ende" *lol* Tja, wenn alles so einfach wäre.

    Ihr seit Klasse - Danke

    Herzliche Grüsse gary