Matti Maekitalo: Warum funktioniert über mehrere Zeilen suchen nicht ?

Beitrag lesen

Hallo,
ich hab das Problem, daß ich einen Suchausdruck über mehrere Zeilen anwenden will, zB ich will alles einlesen was zwischen <text> und </text> steht.

So lese ich ein:

#!C:/Perl/bin/Perl.exe -w

use strict;
my $in;

$/ = ''; # siehe perldoc perlvar: hier steht der Trenner zwischen den einzelnen "Zeilen" (jetzt nur noch eine Zeile)

print "Content-type:text/html\n\n";
open(FILE,"1012512977.txt") or die "cant open File : $!\n";

$in = <FILE>;

print $in;

close(FILE);

Wenn ich jetzt aber:
if ($in =~ /<text>(.*)</text>/)  {

if ($in =~ /<text>(.*?)</text>/g)  {
   # 1. das ? hinter dem *: Damit wird der * auf faul gestellt. Nimm
   # folgende Situation:

<text>ösjlölkdsj</text><text>hhh</text>

# dann findet dein regex ösjlölkdsj</text><text>hhh
   # meiner findet nur ösjlölkdsj
   # 2. das 'g' ganz am Ende:
   # befiehlt deinem regex global zu suchen

$inhalt = $1;
}
print $inhalt;

Tschö Matti