Thorsten: Perl Datei zum Links rausschreiben in CGI einfügen

Ich habe unten stehende wunderschöne Perl Datei die mir aus einem Html dokument die Links rausschreibt.
Aber was um alles in der Welt muss noch drummherum so das ich sie aufrufen kann und in meinem Browser Fenster die links sehe?
also hier das Scrip:
#!/usr/bin/perl -w
######################################################################

(c) Michael Schilli 1998

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

use HTML::TreeBuilder;

$tree = HTML::TreeBuilder->new();           # TreeBuilder erzeugen
$tree->parse_file("document.html");         # Datei parsen

for(@{$tree->extract_links()}) {            # Hyperlinks extrahieren
   my ($linkname, $reference) = @$_;
   print "$linkname\n";
}

$tree->delete();                            # Parse-Baum löschen

  1. hi!

    Aber was um alles in der Welt muss noch drummherum so das ich sie aufrufen kann und in
    meinem Browser Fenster die links sehe?

    Lies dir das Kapitel CGI/Perl in SELFHTML durch, dann kommst du von selbst drauf. Wenn du danach ein spezifisches Problem hast, kannst du hier dazu eine Frage stellen. Das hier ist doch kein Service für Skriptanpassungen.

    bye, Frank!

    1. Auf die Idee bin ich schon gekommen. und ich hab das gesamte Cgi Perl Kapitel von Selfhtml gelsen.
      Ich habe auch xwolf und andere Tutorials Studiert.
      Auch ein Bcuh zu perl 5 habe ich mir gekauft! Also bitte keine Belehrungen über zu frühes posten.
      Ich will auch kein gesamtes Script sondern nur wissen wie die Wechselwirkung zwischen einem in Perl geschriebenen programm der Einbindung von Modulen in ein CGI Script ist welches ich dann als HTMl Seite ausgeben kann. Und dazu finde ich einfach nichts!

      1. hi!

        Ich will auch kein gesamtes Script sondern nur wissen wie die Wechselwirkung zwischen
        einem in Perl geschriebenen programm der Einbindung von Modulen in ein CGI Script ist
        welches ich dann als HTMl Seite ausgeben kann. Und dazu finde ich einfach nichts!

        Weißt du, was Kommas sind? Kommas dienen dazu, einen Satz logisch zu strukturieren. Hättest du welche verwendet, wüsste ich vielleicht auch, was du mit deinem Satz aussagen wolltest. Vielleicht versuchst du das nochmal, dann kann ich dir evtl. weiterhelfen.

        bye, Frank!

      2. Ich will auch kein gesamtes Script sondern nur wissen wie die Wechselwirkung zwischen einem in Perl geschriebenen programm der Einbindung von Modulen in ein CGI Script ist welches ich dann als HTMl Seite ausgeben kann. Und dazu finde ich einfach nichts!

        Was genau willst Du wissen, was nicht in <../../tga.htm#a3> erwähnt ist?

  2. Hallo,

    kann es sein, daß Du den Header vergessen hast!?

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

    for(@{$tree->extract_links()}) {            # Hyperlinks extrahieren
       my ($linkname, $reference) = @$_;
       print "$linkname\n";
    }

    Gruß HaPe

  3. Hallo Thorsten

    $tree = HTML::TreeBuilder->new();           # TreeBuilder erzeugen
    $tree->parse_file("document.html");         # Datei parsen

    for(@{$tree->extract_links()}) {            # Hyperlinks extrahieren
       my ($linkname, $reference) = @$_;
       print "$linkname\n";
    }

    $tree->delete();                            # Parse-Baum löschen

    Dein Skript wird Dir zwar alle Link-Texte zeilenweise in die STDOUT schreiben.
    Die Informationen auf die LINK-URL gehen aber verloren.

    Die Dokumentation zu HTML::TreeBuilder erläutert, dass $tree->extract_links() eine ArrayRef zurückgibt in dessen Array alle Link-Fundstellen aufgelistet sind. Jede Fundstelle (Array-Eintrag) ist selber wieder ein Array mit 2 Einträgen: dem Link-Text und ein HTML::Element-Object auf das HTML::Tree-Element.
    Falls Du auf die URL des Links zugreifen willst, musst Du etwa folgenden Code anwenden:

    for(@{$tree->extract_links()}) {            # Hyperlinks extrahieren
      my ($linkname, $reference) = @$_;
       $LinkURL = $reference->attr("href");
       print "$linkname (URL: $LinkURL)\n";

    }

    Natürlich musst Du im Kopf noch das Modul HTML::Element laden.

    Mit $refernce->attr('attribut') hast Du Zugriff auf alle Attribute des HTML-Elements, in diesem Fall href, name, target, usw. Die Funktion gibt Dir den Wert des Attributes zurück.

    Falls noch weiter Fragen sind, dann poste diese bitte in konkreter Aufgabenstellung. Wir versuchen ja, Deine Fragen zu erraten ;-)

    Grüsse

    Tom

    1. Hallo Thorsten

      Ich vergass:

      Du kannst das HTML-Element natürlich wieder in HTML-Code umwandeln. Verwende dafür folgenden Code:

      $LinkHTML = $reference->as_HTML();
          print "$LinkHTML\n";

      Einen vollständigen Überblick über die Methoden und Eigenschaften von HTML::Element gibt die dazugehörige Dokumentation (müsste mit make installiert worden sein).

      Grüsse

      Tom