andreas: lwp response durchsuchen

Hi,

ich beschäftige mich gerade mit LWP. Mein Problem: ich fordere eine html Datei an und möchte diese dann nach bestimmten Zeichenketten durchsuchen. Ein Beispiel:

while ($response->content() =~ m/(index.php?raid=\d*)">\d\d./)
{
 print $1;
}

So entsteht aber eine Endlosschleife, wo immer nur der erste Treffer gelistet wird. Wie kann ich eine Schleife erzeugen, die mir alle Treffer listet und endet, wenn keine Treffer mehr gefunden werden?

  1. ich beschäftige mich gerade mit LWP. Mein Problem: ich fordere eine html Datei an und möchte diese dann nach bestimmten Zeichenketten durchsuchen. Ein Beispiel:

    while ($response->content() =~ m/(index.php?raid=\d*)">\d\d./)
    {
    print $1;
    }

    Wenn du tatsächlich nur einen einfachen String suchst, dann ist index wohl die bessere Wahl, zumal du damit auch bestimmten kannst ab welcher Stelle gesucht wird.

    Aber du bist sicher, dass du nicht irgendein Modul, dass den HTML Code wesentlich Effektiver auswerten kann, verwenden willst?

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. Wenn du tatsächlich nur einen einfachen String suchst, dann ist index wohl die bessere Wahl, zumal du damit auch bestimmten kannst ab welcher Stelle gesucht wird.

      Mit index kann ich aber keine regulären Ausdrücke verwenden. Da ich die erhaltenene html datei aber nach bestimmten URLs durchsuchen will, komme ich da nicht drum rum.

      1. Wenn du tatsächlich nur einen einfachen String suchst, dann ist index wohl die bessere Wahl, zumal du damit auch bestimmten kannst ab welcher Stelle gesucht wird.

        Mit index kann ich aber keine regulären Ausdrücke verwenden. Da ich die erhaltenene html datei aber nach bestimmten URLs durchsuchen will, komme ich da nicht drum rum.

        Wieso? Was hat das eine mit dem anderen zu tun?

        Struppi.

        --
        Javascript ist toll (Perl auch!)
  2. gudn tach!

    while ($response->content() =~ m/(index.php?raid=\d*)">\d\d./){
    print $1;
    }

    So entsteht aber eine Endlosschleife, wo immer nur der erste Treffer gelistet wird. Wie kann ich eine Schleife erzeugen, die mir alle Treffer listet und endet, wenn keine Treffer mehr gefunden werden?

    mit dem g-modifier geht das. siehe "perldoc perlre".
    aber beachte auch, was Struppi sagte. es gibt ja nach anwendung bessere loesungen.

    prost
    seth

    1. gudn tach!

      mit dem g-modifier geht das. siehe "perldoc perlre".

      eine bessere erklaerung ist in perldoc perlop zu finden.
      aber in perldoc perlre ist ein passenderes beispiel zu dem was du moechtest, naemlich
        @matches = ( 'foo' =~ m{ o? }xg );

      prost
      seth

      1. [...]ist ein passenderes beispiel zu dem was du moechtest, naemlich
          @matches = ( 'foo' =~ m{ o? }xg );

        danke, jetzt funktioniert es