deepsurfer wrote:Das XAMPP-Perl-Addon installieren, danach in ausführenden Perl scripten die allererste Zeile (SHEBANG) angleichen.
#!c:/apachefriends/xampp/perl/bin/perl.exe
Damit sollte das Script laufen, da die benötigten Module im XAMPP-Perl-Addon vorhanden sind.
Wenn du später mit einem Linux arbeitest ist das Perl im normalfall Installiert nur lautet dann der SHEBANG "#!usr/bin/perl"
eine komplette Version oder ist das hier
[21.08.06 16:13] xampp-win32-perl-addon-5.8.8-2.2.3-beta1.exe (55 MB)
nur das Perl-Addon?! Ich sauge jetzt eben mal die Basis-Version und setze diese auf.
Das hat sich dann auf meinen befehl hin extracted - aber dann ist nich viel mehr passiert. Also - ich muss wohl nochmals was anderes saugen.[21.08.06 16:13] xampp-win32-perl-addon-5.8.8-2.2.3-beta1.exe (55 MB)
deepsurfer wrote:Back to the root....
Du hast das PERL Addon für die BETA Version des XAMPP 1.5.4beta1-6 gesaugt..
Für den aktuellen XAMPP 1.5.3a diesen Download benutzen.
http://www.apachefriends.org/de/xampp-windows.html#629
Zudem darauf achten welche Installationsfile du herunterlädst, denn es ist abhängig von der XAMPP 1.5.3a Datei.
Also, welche XAMPP Verrsion hast du bei dir Installiert ?
a) Installer [MD5] 32 MB Installer-Version
b) ZIP [MD5] 83 MB Gewöhnliches ZIP-Archiv
c) EXE (7-zip) [MD5] 28 MB Selbstextrahierendes ZIP-Archiv
davon abhängig das Perl-Addon herunterladen.
deepsurfer wrote:Ich selber benutze die Installerversion des XAMPPs nicht, von daher weiss ich nicht wie sich die Installerroutine bei der eingabe von "e" verträgt.
Sollte aber gehen.
Falls hürden vorliegen, downloade dir die ZIP Version, denn diese kannst auf verschiedene partitionen entpacken ( z.b. e:\xampp f:\xampp z:\xampp ) Nach dem entpacken aber die "setup-xampp.bat" ausführen, damit die integrierten Scripte die neue Pfadanweisung eingetragen bekommen.
GERMAN: Einfach das Add-on in das gültige XAMPP-Verzeichnis entpacken. Danach bitte die "setup_xampp.bat" für eine Aktualisierung der Konfiguration starten. Mit der erneuten Betätigung der "setup_xampp.bat" kann das Modul mod_perl aktiviert oder deaktiviert werden.
Im cgi-bin Verzeichnis liegen TESTscripte.
Aufruf durch http://localhost/cgi-bin/perltest.cgi
Wenn hierbei ein Ausgabe erscheint, dann funktioniert PERL.
Deine eigenen Scripte kannst du entweder in dieses CGI-BIN
Verzeichnis legen und mittels http://localhost/cgi-bin/scriptname.cgi(pl) aufrufen.
ODER : Da XAMPP so eingestellt ist das die Perlanweisungen auch innerhalbt
des gesammten /htdocs Funktionieren, kannst du auch deine Scripte
in ein unterverzeichnis des /htdocs legen.
http://loclahost/verzeichnisname/scriptname.cgi(pl)
Immer voraussgesetzt das bei allen ausführbaren PERL-Scripten der SHEBANG " #!/xampp/perl/bin/perl.exe " lautet.
#!/usr/bin/perl
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.myforum.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;
}
Deepsurfer, dazu muss ich die Shell starten oder?!
gruss
sals Very Happy
btw; muss ich die Shell starten - und ich glaube ja : ich muss sie starten - vielleicht hier; http://localhost/cgi-bin/perltest.cgi ??
deepsurfer wrote:
Zuerst in dem CODE den du gepostet hast die SHEBANG ändern.
Dazu muss das Perl-Addon Installiert sein, da in dem Script drei Module aufgerufen werden. Ein SHELL brauchst du nicht öffnen, denn das Script wird über en Browser aufgerufen. http://localhost/cgi-bn/scriptname.cgi
Da XAMPP so eingestellt ist, das du auch die Script innerhalb deines /htdocs Pfades einsetzen kannst, so kannst du auch ein Pfad im htdocs erstellen und das Script dorthinein legen.
z.b. /htdocs/meintest <<-- darin das script ablegen
Aufruf lautet dann http://localhost/meintest/scriptname.cgi
Diese Funtkion geht nur solange du keine VHOST geschichte bei dir einbaust, aber das ist ein anderes Thema.
Zuerst in dem CODE den du gepostet hast die SHEBANG ändern.
#!/usr/bin/perl
use strict;use warnings;
use LWP::Simple
use HTML::TokeParser;
use URI::URL;
das hier -> #!/usr/bin/perl <- das muss angepasst werden, je nachdem wo ich das Script hinlege, oder! Es ist mit dem Shebang so dass ich eben den Pfad anpassen muss - den Pfad zum Interpreter.
deepsurfer wrote:das hier -> #!/usr/bin/perl <- das muss angepasst werden, je nachdem wo ich das Script hinlege, oder! Es ist mit dem Shebang so dass ich eben den Pfad anpassen muss - den Pfad zum Interpreter.
Pfad zum Interpreter !
Habe mir grad mal das Script auf einen Win-XAMPP 1.5.3a mit Perl-Addon
eingebaut. Es scheint so nicht zu laufen, da eine Adresse eingetragen ist die so nicht funktionieren kann. http://www.myforum.com/forums/viewforum.php?f=17)
Desweiteren motzt der der PERL-Parser über Zeile 15
"my $ua = LWP::RobotUA->new;"
Das Modul ist aber aktive sonst hätte er schon bei Zeile 7 gemeckert, folglich wird hier etwas Definiert was in einem Direkten zusammenhang zu irgendwas steht. Ich bin aber ehrlich gesagt jetzt zu faul das Script weiter durch zu arbeiten, da es scheinbar aus irgendeiner Anwendung stammt die du Benutzen willst. Daher die frage: Woher hast du dieses Script ?
#!/usr/bin/perl
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.hier muss ein phpBB rein /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;
}
$VAR1 = {
'thread' => [
{
'post' => 'Hello, I\'m pretty new to PHPNuke. I\'ve got my site up and running great! I\'m now starting to make modifications, add modules etc. I\'m using the most recent RavenPHP76. I want to display the 5 most recent forum posts at the top of the forum page. I\'m not sure if this functionality is built in, if so, how to activate. Or if there is a module or block made to do this. I looked at Raven\'s Collapsing Forum block but wasn\'t crazy about the format, and I don\'t want it to be collapsable. Thanks! mopho',
'name' => 'mopho'
},
{
'post' => 'hi there',
'name' => 'sail'
},
{
'post' => 'thanks for asking this; :not very sure if i got you right; Do you want to have a feed of the last forumthreads? guess the easiest way is to go to raven and ask how he did it. hth sail.',
'name' => 'sail'
},
{
'post' => 'Thanks. i found what I was looking for. It wasn\'t so easy to find! It\'s called glance_mod. mopho',
'name' => 'mopho'
},
{
'post' => 'hi there thx',
'name' => 'sail'
},
{
'post' => 'it sound interesting - i will have also a look i google after it - and try to find out more regards sailor',
'name' => 'sail'
}
],
'title' => 'Recent Forum Posts Module'
};
my $ua = LWP::RobotUA->new;
my $lp = HTML::LinkExtor->new(\&wanted_links);
my @links;
foreach my $forum_id (17, 3) {
my $url = "http://www. hier muss ein phpBB Rein com/forums/viewforum.php?f=$forum
+_id";
@links = (); # yuck!
my $links = get_threads($url);
foreach my $page (@$links) {
...
}
}
Users browsing this forum: No registered users and 23 guests