Simple RegExp.-Suche
Johannes Z. Lichtenberger
- perl
Hallo.
Innerhalb eines Scriptes übergebe ich mittels <form action="search.pl" method="post"> unter anderem jenen Wert an eben dieses:
<textarea name="websites" cols="70" rows="6" maxsize="500"></textarea>
Nun erscheint 'Can't call method "param" on an undefined value at D:\Server\Apache2\cgi-bin\search.pl line 53'.
Im Prinzip ist alles was das Script nun tut auf den Websiten die übergeben wurden nach einem Ausdruck zu suchen:
if ($query->param()) {
foreach (my $query->param('websites') =~ /(http\S*)/gi) { #<- line 53
my $uri = $1;
if (is_success(my $content = get("$uri"))) {
print "<ul>\n";
if ($content =~ /$query->param('suche')/ig) {
print "<li><a href="$uri">$uri</a></li>\n" if my $query->param('treffer');
}
else {
print "<li><a href="$uri">$uri</a></li>\n" if my $query->param('ktreffer');
}
print "</ul>\n";
}
}
}
Verwendete Module/Pragmas:
use warnings;
use diagnostics;
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use LWP::Simple;
Johannes
Nun erscheint 'Can't call method "param" on an undefined value at D:\Server\Apache2\cgi-bin\search.pl line 53'.
Im Prinzip ist alles was das Script nun tut auf den Websiten die übergeben wurden nach einem Ausdruck zu suchen:
if ($query->param()) {
foreach (my $query->param('websites') =~ /(http\S*)/gi) { #<- line 53
my $query ist nicht definiert. Mach mal das my davor weg.
Struppi.
Nun erscheint 'Can't call method "param" on an undefined value at D:\Server\Apache2\cgi-bin\search.pl line 53'.
Im Prinzip ist alles was das Script nun tut auf den Websiten die übergeben wurden nach einem Ausdruck zu suchen:
if ($query->param()) {
foreach (my $query->param('websites') =~ /(http\S*)/gi) { #<- line 53my $query ist nicht definiert. Mach mal das my davor weg.
Struppi.
Danke, habe das Script aber nochmal etwas umgeschrieben (mittels LWP::UserAgent nun), um Status-Codes zu erhalten.
Dummerweise kommt nun immer:
Error: 400 URL must be absolute
unless ($response->is_success || $response->code == 301 || $response->code == 302) {
print "<li><a href="$uri">$uri</a> | ".$query->param('suche')." | Error: ".$response->code." ".$response->message."</li>\n";
}
http://visualgrafyx.com/publications/learn-to-seek/ sollte ja nun wirklich absolut sein ;-)
Insgesamt:
if ($query->param()) {
foreach ((my $uri = $query->param('websites')) =~ /(http\S*)/gi) {
my $ua = LWP::UserAgent->new;
my $response = $ua->get('$uri');
print "<ul>\n";
unless ($response->is_success || $response->code == 301 || $response->code == 302) {
print "<li><a href="$uri">$uri</a> | ".$query->param('suche')." | Error: ".$response->code." ".$response->message."</li>\n";
}
elsif ($response->content =~ /($query->param('suche'))/i) {
print "<li><a href="$uri">$uri</a> | ".$1."</li>\n" if $query->param('treffer');
}
else {
print "<li><a href="$uri">$uri</a> | ".$query->param('suche')."</li>\n" if $query->param('ktreffer');
}
print "</ul>\n";
}
}
Johannes
if ($query->param()) {
foreach ((my $uri = $query->param('websites')) =~ /(http\S*)/gi) {
Natürlich
foreach ((my @uri) = $query->param('websites') =~ /(http\S*)/gi) {
my $uri = shift @uri;
Kommt allerdings irgendwie auf's gleiche raus.
Danke, habe das Script aber nochmal etwas umgeschrieben (mittels LWP::UserAgent nun), um Status-Codes zu erhalten.
Dummerweise kommt nun immer:
Error: 400 URL must be absoluteunless ($response->is_success || $response->code == 301 || $response->code == 302) {
print "<li><a href="$uri">$uri</a> | ".$query->param('suche')." | Error: ".$response->code." ".$response->message."</li>\n";
}http://visualgrafyx.com/publications/learn-to-seek/ sollte ja nun wirklich absolut sein ;-)
ist sie aber nicht, da fehlt nioch index.htm oder welcome.htm je nachdem.
Struppi.
Danke, habe das Script aber nochmal etwas umgeschrieben (mittels LWP::UserAgent nun), um Status-Codes zu erhalten.
Dummerweise kommt nun immer:
Error: 400 URL must be absoluteunless ($response->is_success || $response->code == 301 || $response->code == 302) {
print "<li><a href="$uri">$uri</a> | ".$query->param('suche')." | Error: ".$response->code." ".$response->message."</li>\n";
}http://visualgrafyx.com/publications/learn-to-seek/ sollte ja nun wirklich absolut sein ;-)
ist sie aber nicht, da fehlt nioch index.htm oder welcome.htm je nachdem.
http://visualgrafyx.com/publications/learn-to-seek/index.html
Klappt nicht -> Error: 400 URL must be absolute
Nun klappt es soweit, komisch nur, dass
elsif ($response->content =~ /$query->param('suche')/gi) {
print "<li><a href="$uri">$uri</a> | Suchausdruck: ".html_escape($query->param('suche'))." -> gefunden</li>\n" if $query->param('treffer');
}
nie matcht :-/
Es wird immer die else-Anweisung am Ende ausgeführt.