Mia,
Ich hab das mal alles mit einen RegExp geloest:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# komplette Datei in $data einlesen
my($data);
open(MAIL, '<', 'text.txt') or die $!;
{
undef($/);
$data = <MAIL>
}
close(MAIL);
open(FILE, '>', 'aufgabe.txt') or die $!;
while($data =~ m {
.*? Aufgabe \s+ (\d+) \s+ von \s+ (\d+) .*? \n+
(?: Bewertung: \s+ (\d) \s+ Punkte)? .*? \n+
.*? Thema: (.+?) \n+
.*? Beschreibung: ((?:.|\n)+?)
Buch: \s+ (.+?), \s+ Seite \s+ (\d+) - (\d+)
}gxs){
printf(FILE<<"END", $1, $2, $3, $4, $5, $6, $7, $8);
<Aufgabe> %d von %d </Aufgabe>
<Bewertung> %s Punkte </Bewertung>
<Thema> %s </Thema>
<Beschreibung> %s </Beschreibung>
<Buch> %s </Buch>
<Seite> %d-%d </Seite>
END
}
close(FILE);
mit meiner Testdatei (gefuellt mit den Testdaten von dir) funktioniert es bestens.
Sollte es bei dir nicht funktionieren waeren "echte" Testdaten besser um den RexExp entsprechend anzupassen.\n\n
<!--EDIT|coax|1086615686-->
,,Das perlt aber heute wieder...'' -- Dittsche