User since
2005-11-14
9
Artikel
BenutzerIn
tach allersteits bin in perl nicht grad der profi:
ich will ein script schreiben, der ALLE url's einer webpage auflistet ich weis aber nicht richtig wie ich habs nur geschaft etwas zu machn, das komischerweise nur die erste url auflistet ich verstehe nicht, warum nicht alle urls aufgelistet werden
woran liegt das?
if ($response->content =~ m{
(http)
://
(.*?)
/
(.*)
}x
){print $1, "://", $2, "/", $3};
User since
2003-08-04
14371
Artikel
ModeratorIn
Das ist kein Perl-Bug, sondern Du benutzt RegExes falsch...
Aber URLs mit RegEx zu parsen ist aeusserst Fehleranfaellig. Du solltest lieber ein Modul von
CPAN benutzen. Z.B.
HTML::LinkExtor oder
HTML::Parser. Zum letzten gibt es sogar einen
Artikel...
Aber zu Deiner RegEx...
Probier mal:
my @urls = $response->content =~ m{(http://.*?/.*?) }g;
print $_,"\n" for(@urls);
Dieser Code ist sehr "unsicher" (fehleranfaellig) und sollte nicht fuer diese Aufgabe verwendet werden...
Lesenswert zu RegEx:
perldoc perlre
perldoc perlretut
perldoc perlrequick
http://www.regenechsen.de\n\n
<!--EDIT|renee|1136853833-->
User since
2003-08-04
5873
Artikel
ModeratorIn
Generell würde ich empfehlen, als Anfänger die Fehler bei mir selbst zu suchen und nicht einen Bug in Perl zu vermuten. In den allermeisten Fällen fährt man damit auch als fortgeschrittener Perluser gut ;)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite
User since
2005-11-14
9
Artikel
BenutzerIn
THX fuer die antworten
hat mich weitergebracht
ich schreibe uebrigens etwas (oder versuch es), das bei google nach 'intitle:"index of" "Microsoft-IIS/5.0 Server at"' sucht und, und dan die gefundenen host, nach den alten unicode bug durchsucht. manche (ungepatchte) apache versionen sind auch anfaelig wisst ihr zufaelig welche?
(das ganze ist natuerlich nur fuer test/uebungszwecke)
User since
2005-04-13
625
Artikel
BenutzerIn
Ich hab auch einmal vor einer weile gedacht einen perl Bug gefunden zu haben. Hatte mich aber nicht getraut, ihn zu posten, weil ich mr einfach zu unsicher war. Als ic dann mehr erfagrung hatte habe ich es doch gepostet und es war wohl tatsache einer.
(Hier in der Forumssuche nach Perlbug suchen, dann findest du ihn)
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
http://perl-tutor.de