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