XAMPP mit perl fahren :: [perl-special]

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Postby deepsurfer » 11. September 2006 17:35

aha.... wenn du also dran denkst die erste Zeile richtig zu setzen dann sollte das Script bei deinem Windows-Xampp laufen.

Wie sich das Perl mit MySQL connect verhält kann ich nix zu sagen, ich hab vor langer Zeit nur mit Textbasierten DBfiles hantiert und seither auch nicht mehr mit Perl gearbeitet. Da kann ich also nix zu sagen.

Hoffe Du kommst jetzt damit klar...

greets
Deep
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby salsa_experience » 11. September 2006 17:46

hallo Deepsurfer,

vielen Dank fuers Posten. Du bist ja sowas von Schnell!!

ich freu mich dass du das mal angeguckt hast. Selber getestet habe ich es auch noch nicht. Ich bin momentan auch jetzt grade unterwegs und kanns nicht testen, da ich nicht am Rechner zuhause sitzte sondern in der Stadt unterwegs bin. Das werde ich aber heute Nacht noch nachholen..

deepsurfer wrote:aha.... wenn du also dran denkst die erste Zeile richtig zu setzen dann sollte das Script bei deinem Windows-Xampp laufen.
Wie sich das Perl mit MySQL connect verhält kann ich nix zu sagen, ich hab vor langer Zeit nur mit Textbasierten DBfiles hantiert und seither auch nicht mehr mit Perl gearbeitet. Da kann ich also nix zu sagen. Hoffe Du kommst jetzt damit klar... greets
Deep


ich werde das also später testen und dann werde ich gucken - wie das mit der geschachtelten (Sub-) Routine arbeitet. Wenn ich die Daten erstmal so habe dann kann ich ja weitergucken. Danach werde ich dann die Daten erstmal so roh angucken und später gucken wie ich das dann weiter verarbeite.

Vielen dank erstmal fuer die Hilfe und für alles.

greetz
sals ;-)

btw: ein echt supergeniales Forum hier - ich bin echt überwältigt von der Hilfe die man hier bekommt. ;-)
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby Wiedmann » 11. September 2006 21:37

salsa_experience wrote:hallo Freunde,

hier noch eine Nachfrage. Ich habe alles gemacht, habe ein ganzes Wochenend installiert und deinstalliert und wieder neu installiert. Nun nach zwei superlangen Nächten bin ich reichlich übermüdet - aber fast am Ziel: Ich habe auf meiner Kiste Xampp am laufen... und auch Perl.

http://localhost/cgi-bin/perltest.cgi gibt folgende Meldung aus:

Code: Select all
GCI with MiniPerl
CGI with MiniPerl is ready ...


Das ist doch das Zeichen dass Perl gut läuft oder; Ist es das denn etwa nicht!? Ich gehe jedenfalls mal davon aus.
Aber es kann ja sein, dass ich immer noch was falsch gemacht habe. Ein eigenes Script habe ich nach /htdocs - gelegt in diesen Ordner hinein ein Unterberzeichnis angelegt mit dem Namen miner

In diesen Ordner habe ich ein Script gelegt, das ich parser.cgi genannt habe. Das Script habe ich unten mal reingestellt - zum angucken.

das macht dann im Ganzen diesen Ausdruck: htdocs/miner/parser.cgi

Dann rufe ich die Seite http://localhost/miner/parser.cgi auf
Es kommt allerdings dann eine Fehlermeldung auf dem Browser: Der
Bildschirminhalt.

Code: Select all
Serverfehler!

Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist.
Fehlermeldung:
couldn't create child process: 720003: parser.cgi
Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.

Error 500


Hmm ich bin momentan am rätseln was se sein kann. Also wenn doch die obenstehende Meldung mit dem kommt
Code: Select all
GCI with MiniPerl
CGI with MiniPerl is ready ...
out


dann ist doch eigentlich zu erwarten dass Perl richtig läuft, oder!?
Was meint ihr denn dazu!?

ich freue mich auf Tipps.


greetz
sals

hier noch das script dass unter http://localhost/miner/parser.cgi aufrerufen wird, während es in htdocs / miner liegt und den Namen parser.cgi hat - Apropos der Shebang ist doch eigentlich auch richtig angepasst oder!?


Code: Select all
#!/xampp/perl/bin/perl.exe
use strict;
use warnings;
use LWP::RobotUA;
use HTML::LinkExtor;
use HTML::TokeParser;
use URI::URL;

use Data::Dumper; # for show and troubleshooting

my $url = "http://www.nukeforums.com/forums/viewforum.php?f=17";
my $ua = LWP::RobotUA->new;
my $lp = HTML::LinkExtor->new(\&wanted_links);

my @links;
get_threads($url);

foreach my $page (@links) { # this loops over each link collected from the index
   my $r = $ua->get($page);
   if ($r->is_success) {
      my $stream = HTML::TokeParser->new(\$r->content) or die "Parse error in $page: $!";
      # just printing what was collected
      print Dumper get_thread($stream);
      # would instead have database insert statement at this point
    } else {
      warn $r->status_line;
    }
}

sub get_thread {
   my $p = shift;
   my ($title, $name, @thread);
   while (my $tag = $p->get_tag('a','span')) {
      if (exists $tag->[1]{'class'}) {
         if ($tag->[0] eq 'span') {
            if ($tag->[1]{'class'} eq 'name') {
               $name = $p->get_trimmed_text('/span');
            } elsif ($tag->[1]{'class'} eq 'postbody') {
               my $post = $p->get_trimmed_text('/span');
               push @thread, {'name'=>$name, 'post'=>$post};
            }
         } else {
            if ($tag->[1]{'class'} eq 'maintitle') {
               $title = $p->get_trimmed_text('/a');
            }
         }
      }
   }
   return {'title'=>$title, 'thread'=>\@thread};
}

sub get_threads {
   my $page = shift;
   my $r = $ua->request(HTTP::Request->new(GET => $url), sub {$lp->parse($_[0])});
   # Expand URLs to absolute ones
   my $base = $r->base;
   return [map { $_ = url($_, $base)->abs; } @links];
}

sub wanted_links {
   my($tag, %attr) = @_;
   return unless exists $attr{'href'};
   return if $attr{'href'} !~ /^viewtopic\.php\?t=/;
   push @links, values %attr;
}
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby salsa_experience » 11. September 2006 22:33

hallo

hier nochmals sals. Also ich habe mal geguckt wegen des Perlscripts dan noch nicht richtig laufen will aufm server.... Es gibt ja fehler aus.

hjmmm was soll ich sagen; ich habe mal geguckt was da alles installier ist und was wo liegt.

xampp\


E:\Server\xampp\cgi-bin

cgi.cgi
perltest.cgi
drivers.pl
printersv.pl



E:\Server\xampp\htdocs
E:\Server\xampp\htdocs\forbidden
E:\Server\xampp\htdocs\miner
E:\Server\xampp\htdocs\modperl
E:\Server\xampp\htdocs\modperlasp
E:\Server\xampp\htdocs\restricted
E:\Server\xampp\htdocs\xampp



hier nochmlas der Shebang den ich angegeben habe in dem Script:

#!/xampp/perl/bin/perl.exe


anstatt:

#!/usr/bin/perl
use strict;
use warnings;




hmm keine Ahnung was jetzt noch sein kann - ich rätsel noch etwas dann mach ich morgen weiter
gretz
bis bald!
sals
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby kleinweby » 12. September 2006 05:44

deine Shebang is noch immer nicht richtig, denn bei windows gibs halt kein "/" du muss schon den vollen pfad eintragen.

kleinweby
User avatar
kleinweby
AF Moderator
 
Posts: 393
Joined: 03. August 2005 19:52
Location: Magdeburg
Operating System: Mac OS X 10.7

Postby salsa_experience » 12. September 2006 08:40

hi Kleinweby,

danke fuer die antwort


Kleinweby wrote:deine Shebang is noch immer nicht richtig, denn bei windows gibs halt kein "/" du muss schon den vollen pfad eintragen.
kleinweby


die hier stimmt also noch nicht:


#!/xampp/perl/bin/perl.exe


ich muss die ändern. ich werde da mal mit rumspielen
danke jedenfalls


update: die allererste Zeile (SHEBANG) angleichen.
#!c:/apachefriends/xampp/perl/bin/perl.exe
so hat das deepsurfer geschrieben. hmm dann muss das also so hiessen bei mir.

#!E:/Server/xampp/perl/bin/perl.exe



hmm, muss e klein sein oder gross?! Das teste ich gleich mal

greets
sals ;-)


update2


wenn ich das jetzt so mache

Code: Select all
#!e:/Server/xampp/perl/bin/perl.exe
use strict;
use warnings;
use LWP::RobotUA;
use HTML::LinkExtor;
use HTML::TokeParser;
use URI::URL;



dann gibt er folgendes raus;

Code: Select all
  <?xml version="1.0" encoding="ISO-8859-1" ?>
  <!DOCTYPE html (View Source for full doctype...)>
- <html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
- <head>
  <title>Serverfehler!</title>
  <link rev="made" href="mailto:admin@localhost" />
- <style type="text/css" xml:space="preserve">
- <!-- /*
  -->
- <![CDATA[
/*><!--*/
    body { color: #000000; background-color: #FFFFFF; }
    a:link { color: #0000CC; }
    p, address {margin-left: 3em;}
    span {font-size: smaller;}
/*

  ]]>
  */-->
  </style>
  </head>
- <body>
  <h1>Serverfehler!</h1>
  <p>Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist.</p>
- <p>
  Fehlermeldung:
  <br />
  Premature end of script headers: parser.cgi
  </p>
- <p>
  Sofern Sie dies f
  ü
  r eine Fehlfunktion des Servers halten, informieren Sie bitte den
  <a href="mailto:admin@localhost" shape="rect">Webmaster</a>
  hier
  ü
  ber.
  </p>
  <h2>Error 500</h2>
- <address>
  <a href="/" shape="rect">localhost</a>
  <br />
- <span>
  09/12/06 09:52:22
  <br />
  Apache/2.2.2 (Win32) DAV/2 mod_ssl/2.2.2 OpenSSL/0.9.8b mod_autoindex_color PHP/5.1.4
  </span>
  </address>
  </body>
  </html>


hmmm da ist noch was drinne


update3
jetzt hab ich das nochmals probiert. jetzt scheints zu gehen. Jedenfalls rösdelt der Rechner jschon ne halbe stunde nacheem ich die seite aufgerufen habe- Wahrscheilich arbeitet er das script ab und schreibt mir jetzt Stundenlang den schirm voll- Bis dahin allerdings zeigt er die Sanduhr.

Könnte das denn so sein.?

greetz sals
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby deepsurfer » 12. September 2006 10:10

STOP !!!

@Kleinweby !!
JAein, es reicht #!/xampp/perl/bin/perl.exe
wenn der xampp auf c:\xampp Installiert ist.

Wenn er in einem unterpfad liegt z.b. c:\apachefriends\xampp
so muss der SHEBANG #!/apachefriends/xampp/perl/bin/perl.exe lauten.

Richtig ist, das ein "absoluter Pfad" angegeben werden muss, die Laufwerkskennung kann dabei weg bleiben, da der erste SLASH die höchste Pfadangabe darstellt.

ist bei mir mit allen derzeit getesteten Scripten so funktionstüchtig.
Wenn man die Testscript von XAMPP selber mal editiert sieht man auch wie der SHEBANG auszusehen hat !!!
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby salsa_experience » 12. September 2006 10:29

hallo deepsurfer,

[ guten Morgen! ]

danke fuers Posten. den Shebang habe ich nach kleinweby mal angepasst

dann kamen zunächst die bekannten, oben angegebenen Meldungen.

Also ich bin momentan am Ueberlegen. Seit dem ich es vor 30 minuten wieder probiert habe, habe ich einen weißen Bildschirm und die Sanduhr mitten drinne. Kann es denn sein, dass das Script jetzt eben abgearbeitet wird - und kann es sein dass der LWP-Teil des Scripts sich derzeit eben von dem server der besucht wird , alle threads holt?

btw: hmmm - ich denke dass ich unter Linux mehr Kontrolle über den Prozess hätte und wüßte was da jetzt so passiert. Was meinst du?

Aber egal; ich arbeite momentan eben mit dem Xampp auf Windows. und
das Scritp läuft ja auch bei dir - jedenfalls gibts andere Meldungen als bei mir.

Meine Frage ist jetzt halt die: habe ich denn bisher wenigestns alles richtig installiert - Habe ichalles an Bord was ich haben muss? Was meinst du denn?! Oben habe ich eine Message repostet, bei der beistimmte Fehlermeldungen drinne sind, die auf den Status von Perl deuten.



deepsurfer wrote:STOP !!!

@Kleinweby !!
JAein, es reicht #!/xampp/perl/bin/perl.exe
wenn der xampp auf c:\xampp Installiert ist.

Wenn er in einem unterpfad liegt z.b. c:\apachefriends\xampp
so muss der SHEBANG #!/apachefriends/xampp/perl/bin/perl.exe lauten.

Richtig ist, das ein "absoluter Pfad" angegeben werden muss, die Laufwerkskennung kann dabei weg bleiben, da der erste SLASH die höchste Pfadangabe darstellt.

ist bei mir mit allen derzeit getesteten Scripten so funktionstüchtig.
Wenn man die Testscript von XAMPP selber mal editiert sieht man auch wie der SHEBANG auszusehen hat !!!


hmm - ich werde das alles nochmals testen. Ich warte zunächst mal ab was der Rechner macht. Hmmm - so wie das script aufgebaut ist muesste es denn Schirm vollschreiben - mit dem Datadumper - oder legt es denn eine Datei an. Dann würde ich das ja auch irgendwo sehen....

[und dann eben auf diese Weise kontrollieren koennen. ]


greetz
sals ;-)


nochmals @deepsurfer: läuft das Script bei dir denn, [unter Windows], auch so oder so ähnlich ab...? Vielleicht ist ja auch mein Rechner zu langsam. Es ist halt wie im Blindflug.
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby deepsurfer » 12. September 2006 12:11

Also wenn eine Sanduhr kommt, heist es ja erstmal das er was tut.
Ich denke das er nach 3 Minuten nicht auffhört sodass ich von ausgehe das das Script seine Arbeit erstmal verrichtet.

Erste Check möglichkeit wäre eine abfrage auf deine DB mit phpmyadmin, ob dort überhaut daten auflaufen.

Zweite möglichkeit wäre das du ein Forum-Thread ausliest das eventuell nur 2 oder 3 Texte beinhaltet, sodass der CGI-DUMP nicht erst mir hunterten von Texten arebieten muss.
Wenn dann damit ein zufriedenes Ergebnis vorliegt weisst du das dein Script das tut was du willst und kannst es wieder auf einen ForumThread loslassen das gut gefüllt ist.

nochmals @deepsurfer: läuft das Script bei dir denn, [unter Windows], auch so oder so ähnlich ab...? Vielleicht ist ja auch mein Rechner zu langsam. Es ist halt wie im Blindflug.

Ich hab dein Script (PrivatMessage) nicht getestet, da ich auf anhieb jetzt kein Forum zum CGI-Dumpen habe um es zu testen.

Da Perlscripte von hause aus keinen Status anzeigen, wäre vielleicht noch die möglichkeit das DUMPscript dahingehen zu erweitern das er jeweils nur einen Threadtext einliest, in DB abspeichert, eine Statusmeldung ausgibt und dann mit dem nächsten Threadtext weiterarbeitet.
Bedarf also einer zwischengelagerten Abfrageschleife im Script
(kann ich jetzt so nicht schreiben, müsste mich dafür wieder sehr viel einlesen.)

Was mir aber auffällt ist....warum in PERL ?, warum nicht in PHP geschrieben, damit sind Statusmeldungen mit drei befehlsfolgen direkt anzeigbar. Würde auch den Webserver nicht so sehr belasten, da PHP solche Abgriffe und Auswertungen fast "ON the Fly" durchführt.

Soll heissen, das bei PERL immer erst ein Ergebnis vorhanden sein muss um daraus eine Statusmeldung zu generieren, bei PHP kann man direkt in die Abarbeitung eine "echo" ausgabe einbauen worin man sieht was gerade vom Script abgearbeitet wird.

An die PHP und PERL Freaks:
man möge mir verzeihen wenn meine Aussage so nicht stimmem sollte.
Verbesserungen zu meiner Aussage sind willkommen ;)
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby salsa_experience » 12. September 2006 13:05

halllo Deepsurfer, hello all;


update 15:00 UHR
habe noch was gefunden: es sollte fuer die Ausgabe der Ausdruck unten noch in den code eingebaut werden.
das hier: print "Content-Type: text/html\n\n":
ich stelle den nun abgeänderten Code mal unten rein.


danke fuers Posten - für die direkten Hinweise zum Prozess. [btw; es ist 13:54 und der Prozess läuft immernoch] Vorweg gefragt: Gibt es denn einen Ort auf den das Perlscript per default schreibt. Imho kann es doch nur innerhalb des XAMPP sein - wenn mich hier nicht alles täuscht. Da sollten dann eben die Daten auflaufen... - wenn geschrieben wird . und nicht nur auf dem Schirm ausgegeben werden soll, was bei meinem weissen Schirm ja auch so nicht der Fall ist.



Also was ich jetzt mache: ich gucke jetzt mal was ich noch machen kann
schaue später wieder hier vorbei. vielleicht habe ich in der zwischenzeit dann ja schon was gefunden. Ich hoffe nur dass ich eben alles richtig installiert habe - dass der Shebang stimmt und so weiter und so fort.
@Deepsurfer - es wäre für die Fehlersuche vielleicht sehr sehr hilfreich wenn du guckst ob das Script, dass ich dir in der pm gepostet habe, jenes mit der vollen URL, bei dir läuft. Im allergroessten Notfall koennte ich dann vielleicht einach ein kpl. Xampp von dir installieren -sozusagen eben recompiled - meinst du dass das geht oder ist diese Idee relativ verrrückt. diese Idee ist mir halt im Moment so eingeschossen - als ich auf der Suche nach Fehlern und nach moeglichen Loesugnen war ;-). Ich habe eben immer noch den Verdacht, dass ich nicht richtig und sauber installiert habe!? Dieser Verdacht beschleicht mich immer noch.


Also - erstmal: Danke auch fuers Grundsätzliche und die Tipps zu PHP und Perl. Hmm ich dachte dass Perl halt gut ist fuer Parsing Aufgaben. Ich habe auch schon an Python gedacht. Da gibtet gute Parser - zb. den hier http://www.crummy.com/software/BeautifulSoup
der sehr leistungsstark ist.


deepsurfer wrote:Also wenn eine Sanduhr kommt, heist es ja erstmal das er was tut. Ich denke das er nach 3 Minuten nicht auffhört sodass ich von ausgehe das das Script seine Arbeit erstmal verrichtet.

Erste Check möglichkeit wäre eine abfrage auf deine DB mit phpmyadmin, ob dort überhaut daten auflaufen.

Zweite möglichkeit wäre das du ein Forum-Thread ausliest das eventuell nur 2 oder 3 Texte beinhaltet, sodass der CGI-DUMP nicht erst mir hunterten von Texten arebieten muss.
Wenn dann damit ein zufriedenes Ergebnis vorliegt weisst du das dein Script das tut was du willst und kannst es wieder auf einen ForumThread loslassen das gut gefüllt ist.

nochmals @deepsurfer: läuft das Script bei dir denn, [unter Windows], auch so oder so ähnlich ab...? Vielleicht ist ja auch mein Rechner zu langsam. Es ist halt wie im Blindflug.

Ich hab dein Script (PrivatMessage) nicht getestet, da ich auf anhieb jetzt kein Forum zum CGI-Dumpen habe um es zu testen.


hmm - mit dem in der pm geposteten muesste ein forum dabei sein.

Da Perlscripte von hause aus keinen Status anzeigen, wäre vielleicht noch die möglichkeit das DUMPscript dahingehen zu erweitern das er jeweils nur einen Threadtext einliest, in DB abspeichert, eine Statusmeldung ausgibt und dann mit dem nächsten Threadtext weiterarbeitet.
Bedarf also einer zwischengelagerten Abfrageschleife im Script
(kann ich jetzt so nicht schreiben, müsste mich dafür wieder sehr viel einlesen.)


hm - ich habe noch keine DB-Part geschrieben. Das wird also noch nicht in die mysql rein geschrieben. phpMyadmin bringt im Moment also noch nichts.

Was mir aber auffällt ist....warum in PERL ?, warum nicht in PHP geschrieben, damit sind Statusmeldungen mit drei befehlsfolgen direkt anzeigbar. Würde auch den Webserver nicht so sehr belasten, da PHP solche Abgriffe und Auswertungen fast "ON the Fly" durchführt.


sollte dann über fopen oder curl gehen, denke ich mal.
Laden kann man die HTML-Seiten mit via HTTP mit fopen() und dann mit DOM::loadHtml parsen.- Zum Beispiel. Damit koennte man auch einen robusten Parser bauen - Robust muss er allerdings sein.

Soll heissen, das bei PERL immer erst ein Ergebnis vorhanden sein muss um daraus eine Statusmeldung zu generieren, bei PHP kann man direkt in die Abarbeitung eine "echo" ausgabe einbauen worin man sieht was gerade vom Script abgearbeitet wird.


hmm gute tipps und Ideen. Das ist interessant. Hmm ich sollte momentan erstmal also gucken ob mein Proof of concept was rausgibt - dann kann ich davon ausgehend ja auch weitermachen. Denke dass wenn ich das Perl-script auf dem xampp am laufen habe dann kann ichs immer noch in PHP schreiben oder eben auch eine mysql-connect herstellen usw. usf.


ich gucke jetzt also erstmal was es mit dem laufenden Script auf sich hat.
und melde mich spaeter wieder hier -

greetz
sals ;-)

@Deepsurfer - das script in der pm sollte so laufen... hat auch ein forum drinne mit dem es gehen muesste.

@Deepsurfer - es wäre für die Fehlersuche vielleicht sehr sehr hilfreich wenn du guckst ob das Scirpt bie dir läuft. Im allergroessten Notfall koennte ich dann vielleicht einach ein kpl. Xampp von dir installieren -sozusagen eben recompiled - meinst du dass das geht oder ist diese Idee relativ verrrückt;-). Jedenfalls würde es einen weiteren Schritt in der Fehlersuche darstellen - bringen, gerade weil und wenn ich hier eben nicht weiß ob ich alles richtig sauber installiert habe. Aber ich gucke jetzt erstmal noch ob ich etwas ueber den laufenden Prozess rauskriege. Melden tu ich mich auf alle Faelle wieder.


hier der update von 15:00 Uhr - mit dem geanederten code:

Code: Select all



#!/usr/bin/perl -> verbesserter Shebang - der ist dann eben anders!!
use strict;
use warnings;

use LWP::RobotUA;
use HTML::LinkExtor;
use HTML::TokeParser;
use URI::URL;

use Data::Dumper; # for show and troubleshooting

my $url = "http://www.myforums.com/forums/viewforum.php?f=17";
my $ua = LWP::RobotUA->new;
my $lp = HTML::LinkExtor->new(\&wanted_links);

my @links;
get_threads($url);

foreach my $page (@links) { # this loops over each link collected from the index
   my $r = $ua->get($page);
   if ($r->is_success) {
      my $stream = HTML::TokeParser->new(\$r->content) or die "Parse error in $page: $!";
      # just printing what was collected
      print Dumper get_thread($stream);
      # would instead have database insert statement at
this point
##da muss es also als ersatz rein->
                print "Content-Type: text/html\n\n":
## stimmts !?

    } else {
      warn $r->status_line;
    }
}

sub get_thread {
   my $p = shift;
   my ($title, $name, @thread);
   while (my $tag = $p->get_tag('a','span')) {
      if (exists $tag->[1]{'class'}) {
         if ($tag->[0] eq 'span') {
            if ($tag->[1]{'class'} eq 'name') {
               $name = $p->get_trimmed_text('/span');
            } elsif ($tag->[1]{'class'} eq 'postbody') {
               my $post = $p->get_trimmed_text('/span');
               push @thread, {'name'=>$name, 'post'=>$post};
            }
         } else {
            if ($tag->[1]{'class'} eq 'maintitle') {
               $title = $p->get_trimmed_text('/a');
            }
         }
      }
   }
   return {'title'=>$title, 'thread'=>\@thread};
}

sub get_threads {
   my $page = shift;
   my $r = $ua->request(HTTP::Request->new(GET => $url), sub {$lp->parse($_[0])});
   # Expand URLs to absolute ones
   my $base = $r->base;
   return [map { $_ = url($_, $base)->abs; } @links];
}

sub wanted_links {
   my($tag, %attr) = @_;
   return unless exists $attr{'href'};
   return if $attr{'href'} !~ /^viewtopic\.php\?t=/;
   push @links, values %attr;
}

Last edited by salsa_experience on 14. September 2006 14:33, edited 2 times in total.
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby deepsurfer » 12. September 2006 14:09

@Deepsurfer - es wäre für die Fehlersuche vielleicht sehr sehr hilfreich wenn du guckst ob das Script, dass ich dir in der pm gepostet habe, jenes mit der vollen URL, bei dir läuft. Im allergroessten Notfall koennte ich dann vielleicht einach ein kpl. Xampp von dir installieren -sozusagen eben recompiled - meinst du dass das geht oder ist diese Idee relativ verrrückt. diese Idee ist mir halt im Moment so eingeschossen


Ich werds testen... kann aber sein das ich morgen erst was zu schreibe (im moment viel auf dem schreibtisch hier liegen)

Eine XAMPP Version von mir wäre unnötig.
Ich hab alle Vorgehensweisen hier beschrieben.
Ich benutze:
- XAMPP 1.5.3a ZIP Version (einfach entpackt und läuft c:\xampp)
- Perl-Addon für "XAMPP 1.5.3a ZIP" heruntergeladen und entpackt
- Perl-testscripte von XAMPP durchgetetst
- PERL Sysinfoscript (was ich seit jahren benutze zum testen des PERL wie PHPINFO) läuft. Mit dem Sysinfoscript gesehen das die Erforderliche Module deines Scriptes im PerlAddon vorhanden sind
- Scripttesting innerhalb des /htdocs Pfades getestet und für Lauffähig erklärt

Und bevor die Frage aufkommt (auch von den anderen)
http://cologne-predators.de/deepsurfer/sysinfoxampp.rar
Ins CGI-BIN Verzeichnis entpacken http://localhost/cgi-bin/sysinfoxampp.cgi aufrufen.
An den SHEBANG denken !!
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby salsa_experience » 12. September 2006 14:30

hallo Deepsurfer,

update: nach erfolgtem Test: neg. Befund: siehe unten


vielen Dank - ich bin froh dass du geschrieben hast. Habe grade nähmich das mit der veränderten Ausgabe getestet und wieder errrors gegkriegt.
Nun glaube ich dass da was grundsätzlich nicht richtig läuft - und ich vielleicht einfach beim Perl noch grundsätzlich was falsch gemacht habe, oder nicht richtig beachtet habe.

Die von dir hier geposteten DATEN habe ich gleich mal downgeloadet. Das Paket entpackt und in htdocs gelegt - und den Shebang werde ich auch gleich anpassen.

Mal gucken was dann rauskommt - iwenn ich das richtig verstanden habe, dann kann ich damit das PERL hier einfach mal testen.

deepsurfer wrote:
@Deepsurfer - es wäre für die Fehlersuche vielleicht sehr sehr hilfreich wenn du guckst ob das Script, dass ich dir in der pm gepostet habe, jenes mit der vollen URL, bei dir läuft. Im allergroessten Notfall koennte ich dann vielleicht einach ein kpl. Xampp von dir installieren -sozusagen eben recompiled - meinst du dass das geht oder ist diese Idee relativ verrrückt. diese Idee ist mir halt im Moment so eingeschossen


Ich werds testen... kann aber sein das ich morgen erst was zu schreibe (im moment viel auf dem schreibtisch hier liegen)

Eine XAMPP Version von mir wäre unnötig.
Ich hab alle Vorgehensweisen hier beschrieben.
Ich benutze:
- XAMPP 1.5.3a ZIP Version (einfach entpackt und läuft c:\xampp)
- Perl-Addon für "XAMPP 1.5.3a ZIP" heruntergeladen und entpackt
- Perl-testscripte von XAMPP durchgetetst
- PERL Sysinfoscript (was ich seit jahren benutze zum testen des PERL wie PHPINFO) läuft. Mit dem Sysinfoscript gesehen das die Erforderliche Module deines Scriptes im PerlAddon vorhanden sind
- Scripttesting innerhalb des /htdocs Pfades getestet und für Lauffähig erklärt

Und bevor die Frage aufkommt (auch von den anderen)
http://cologne-predators.de/deepsurfer/sysinfoxampp.rar
Ins CGI-BIN Verzeichnis entpacken http://localhost/cgi-bin/sysinfoxampp.cgi aufrufen.
An den SHEBANG denken !!



das hier habe ich gesaugt:
http://cologne-predators.de/deepsurfer/sysinfoxampp.rar
Ins CGI-BIN Verzeichnis entpacken http://localhost/cgi-bin/sysinfoxampp.cgi aufrufen.

den shebang aendere ich zu

#!e:/Server/xampp/perl/bin/perl.exe


BTW: mit diesem Shebang arbeite ich seit 24 Stunden jetzt schon. Damit habe ich auch das script immer laufen lassen.

Also ich teste jetzt mal was damit rauskommt wenn ich diesen Shebang auf dein Scirpt anwende.

grusss
sals ;-) :D

btw. Ich melde mich heute am spaeten Abend wieder - muss naher auch noch einiges andere erledigen. Ist mir also ganz recht wenn wir da ggf. morgen weiter machen. cherio ;-)

update 15:34: nach erfolgtem Test: neg. Befund: siehe hier;

hier die ergebnisse - vorausgesetzt ich habe alles richtig gemacht; hmmm - hier der Shebang den ich eingesetzt habe:
#!e:/Server/xampp/perl/bin/perl.exe

hier die Bildschirmausgabe:

Code: Select all
Objekt nicht gefunden!
Der angeforderte URL konnte auf dem Server nicht gefunden werden. Sofern Sie den URL manuell eingegeben haben, überprüfen Sie bitte die Schreibweise und versuchen Sie es erneut.

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.

Error 404
localhost
09/12/06 15:34:08
Apache/2.2.2 (Win32) DAV/2 mod_ssl/2.2.2 OpenSSL/0.9.8b mod_autoindex_color PHP


hmmm - ich glaube ja langsam dass ich hier was grundlegend falsch habe oder falsch gemacht habe. Da wird wohl das Perl garnicht richtig laufen. So wies aussieht, ist mein Perl hier total schlecht am Laufen. ....So wie es aussieht ist dieser Test genauso dass wir zu keinem anderen Schluss kommen koennen, oder!?
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby deepsurfer » 12. September 2006 15:06

Wurde zwar schonmal von dir getestet, aber nochmal schadet nicht.

Im \xampp\cgi-bin Verzeichnis liegen Testscripte
cgi.cgi
perltest.cgi
printenv.pl

Wenn alle drei mit dem aufruf http://localhost/cgi-bin/scriptname.xxx
laufen, so sollte das sysinfoxampp.cgi das dort nun auch sein sollte
funktionieren.
Wenn du das Perl-Addon falsch installiert hättest, so würde eine klare Fehlermeldung erscheinen (soeben getestet mit einer XAMPP Version ohne Perl-Addon)

Da nun bei dir 404 Meldung kommt, sieht für mich so aus das du den Aufruf falsch gemacht hast oder das sysinfoxampp.cgi nicht dort abgelegt hast wie es in dem HINWEIS.txt steht.

Die Äusserung das du CGI Scripte im XAMPP auch innerhalb vom htdocs Pfad benutzen kannst gilt auch bei diesem Script nur ist dementsprechend der Aufruf anders.

Folglich:
Scripte die im \xampp\cgi-bin sind, werden mit http://localhost/cgi-bin/scriptname aufgerufen.

Scripte die innerhalb des htdocs abgelegt sind (z.b. \htdocs\scripttestpfad )
werden mit http://localhost/scripttestpfad/scriptname aufgerufen.
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby salsa_experience » 12. September 2006 15:16

allo Deepsurfer.,

update 15:320 Uhr: das Neueste - nach dem Durchlesen deines ganzen Tesxtes habe ich nochmal
geguckt und festgestellt dass deine Ferndiagnose richtitg ist. Ich habe das sysinfoscript falsch abgelegt - es war nicht in dem CGI-Bin ordner drinne sondern - in dem ordner wo mein Testscritp auch ist. Also - nach der Korrektur - kann ich es auch aufrunfen. http://localhost/cgi-bin/sysinfoxampp.cgi - damit kann ich es aufrufen.
Es gibt eine Info aus.


Perl: E:\Server\xampp\perl\bin\perl.exe
Perl-Version: 5.008007
Betriebssystem: MSWin32
Perl befindet sich in:
Sendmail:
Verzeichnisse, die nach Perl durchsucht wurden E:/Server/xampp/perl/lib
E:/Server/xampp/perl/site/lib


und so weiter

ich guck später wieder rein.

es ist jetzt 15:24 Uhr und ich muss jetzt aus dem Haus,
Auf alle Faelle ist jetzt mal sicher dass ich perl gut am Laufen habe - oder was meinst du denn!!?!


Gruss sals
;-)





Aufs Ganze gesehene;
das mit den weiteren Tests hier ist zeitlich älter - aber dennoch nicht super gut - aber ich denke dass der Sysinfotest jetzt erstmal gut ausgefallen ist - darauf kann ich ja auch später aufbauen oder!?



hier der kurze Test: Drei scripte - und einmal hats geklappt;

http://localhost/cgi-bin/cgi.cgi
Objekt nicht gefunden!
Der angeforderte URL konnte auf dem Server nicht gefunden werden. Sofern Sie den URL manuell eingegeben haben, überprüfen Sie bitte die Schreibweise und versuchen Sie es erneut.

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.

Error 404
localhost
09/12/06 16:12:45
Apache/2.2.2 (Win32) DAV/2 mod_ssl/2.2.2 OpenSSL/0.9.8b mod_autoindex_color PHP/5.1.4


http://localhost/cgi-bin/perltest.cgi
GCI with MiniPerl
CGI with MiniPerl is ready ...



http://localhost/cgi-bin/scriptname.xxx

Objekt nicht gefunden!
Der angeforderte URL konnte auf dem Server nicht gefunden werden. Sofern Sie den URL manuell eingegeben haben, überprüfen Sie bitte die Schreibweise und versuchen Sie es erneut.
Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.

Error 404
localhost
09/12/06 16:13:42
Apache/2.2.2 (Win32) DAV/2 mod_ssl/2.2.2 OpenSSL/0.9.8b mod_autoindex_color PHP/5.1.4



hmmm etzt muiss ich mal gucken was du noch da schreibst. Bin grade am aus dem Haus-Laufen... und gucke später nochmals da drauf. Wollte dir nur kurz die ersten Ergebnisse posten.

bis spaeter

Sals
;-)


deepsurfer wrote:Wurde zwar schonmal von dir getestet, aber nochmal schadet nicht.

Im \xampp\cgi-bin Verzeichnis liegen Testscripte
cgi.cgi
perltest.cgi
printenv.pl

Wenn alle drei mit dem aufruf http://localhost/cgi-bin/scriptname.xxx
laufen, so sollte das sysinfoxampp.cgi das dort nun auch sein sollte
funktionieren.
Wenn du das Perl-Addon falsch installiert hättest, so würde eine klare Fehlermeldung erscheinen (soeben getestet mit einer XAMPP Version ohne Perl-Addon)

Da nun bei dir 404 Meldung kommt, sieht für mich so aus das du den Aufruf falsch gemacht hast oder das sysinfoxampp.cgi nicht dort abgelegt hast wie es in dem HINWEIS.txt steht.

Die Äusserung das du CGI Scripte im XAMPP auch innerhalb vom htdocs Pfad benutzen kannst gilt auch bei diesem Script nur ist dementsprechend der Aufruf anders.

Folglich:
Scripte die im \xampp\cgi-bin sind, werden mit http://localhost/cgi-bin/scriptname aufgerufen.

Scripte die innerhalb des htdocs abgelegt sind (z.b. \htdocs\scripttestpfad )
werden mit http://localhost/scripttestpfad/scriptname aufgerufen.
salsa_experience
 
Posts: 104
Joined: 25. August 2006 10:46

Postby deepsurfer » 12. September 2006 15:25

Sorry, aber irgendwie zweifel ich jetzt etwas an dir (nicht böse gemeint, soll nur grad meinen Gedanken verdeutlichen)

DENN

wenn ich schon Pfad angaben mache, so wäre es doch allein der Neugierde wegen angesagt zu schauen ob meine Aussage zutrifft.
Folglich, schaue mit deinem Dateibrowser in dieses erwähnte Verzeichnis,
bei dir also e:\Server\xampp\cgi-bin
Dort sollten die erwähnten Scripte liegen, wenn nicht, dann hast du etwas gelöscht !


Meine Aufürung zu diesem LINK
http://localhost/cgi-bin/scriptname.xxx
sollte eigentlich selbsterklärend sein und wenn man nur etwas hinschaut ist dies ein einfache Beispielerklärung, deren Inhalt sich aus dem Text ergibt.

In diesem Sinne.... (hab jetzt ein meeting)...vielleicht bis später
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

PreviousNext

Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 49 guests