Thread Problem beim Regex zuweisen an Variable (4 answers)
Opened by Tr0Nix at 2008-01-17 00:07

Tr0Nix
 2008-01-17 00:07
#104809 #104809
User since
2006-11-21
44 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen

Ich moechte mit WWW::Mechanize eine Webseite abholen und anschliessend parsen. Da ein Resultat-Set ueber 2 Zeilen geht und eine Seite mehrere solcher Result-Sets hat, parse ich mit einer Regex einen langen String der die Seite enthaelt und ignoriere die CR-Zeichen.

Das funktioniert ganz gut, wenn ich es folgendermassen mache:
Code: (dl )
1
2
3
for ($object->content =~ /<p><strong>([\W\w].+)<\/strong><br \/>[\w\W].+(http:\/\/x\.y\.z[^"]+)/g) {
print "$1: $2 \n";
}


Nun mein Problem, wenn ich 1:1 die Regular Expression in eine Variable schmeissen will und anschliessend dieselbe for-Schleife mache:

Code: (dl )
1
2
3
4
my $regex = /<p><strong>([\W\w].+)<\/strong><br \/>[\w\W].+(http:\/\/x\.y\.z[^"]+)/g;
for ($object->content =~ $regex) {
print "$1: $2 \n";
}


Kriege ich fuer diese Zeile folgende Fehlermeldung:
"Use of uninitialized value in pattern match (m//)".

Weiss jemand, was Perl sich da genau denkt? Der Debugger zeigt, dass $regex leer bleibt nach der Zuweisung. Escape ich da was nicht sauber? Gaensefuesschen escapen hat jedenfalls nichts gebracht :(

P.S. Performance und Anpassungen spielen keine Rolle, es ist mehr ein Quick & Dirty Feldversuch

P.P.S. das geht auch nicht:
Code: (dl )
my $linkRegex = m/blah/g;

View full thread Problem beim Regex zuweisen an Variable