html-Tabelle splitten

html-Tabelle splitten

am 19.03.2006 12:57:41 von Hago Ziegler

Hallo,

ich habe eine lange Textdatei, mit lauter solchen Einträgen:
..........


....
...










....
...








..................
Statt der Punkte gibt es Text.
Dieses Element wiederholt sich sehr oft, immer mit der Leerzeile
dazwischen.

Ich möchte gerne die ganze Datei umdrehen, so dass der jetzt unterste
Eintrag ganz oben steht.

So habe ich es versucht:

$datei1 = 'gb.txt';
$datei2 = 'gb3.txt';
open(DATEI1, "<$datei1");
$D1 = ;
@eintr = split(/\n\r\n\r/,$D1);
@ein = reverse @eintr;
open(DATEI2, ">$datei2");
foreach(@ein){ print DATEI2 "$_\n";}
close DATEI2;
close DATEI1;

Ich hab' natürlich schon eine ganze Reihe von reg.Expr. versucht.
Als Ergebnis in Datei2 erhalte ich immer nur:

und ein Zeilenumbruch.

Jetzt habe ich "1x1x1" in die Leerzeilen geschrieben und versucht so zu
splitten, aber das Ergebnis bleibt das gleiche.

Kann mir da jemand helfen?

Gruß, Hago

Re: html-Tabelle splitten

am 19.03.2006 15:57:42 von joerg.hubele

Hago Ziegler wrote:
> Hallo,
>
> ich habe eine lange Textdatei, mit lauter solchen Einträgen:

> Dieses Element wiederholt sich sehr oft, immer mit der Leerzeile
> dazwischen.
>
> Ich möchte gerne die ganze Datei umdrehen, so dass der jetzt unterste
> Eintrag ganz oben steht.
>
> So habe ich es versucht:

> open(DATEI1, "<$datei1");
> $D1 = ;
Das macht nicht was du erwartest, siehe $/ in perlvar.
Um die ganze Datei in einen Skalar einzulesen:
{
local $/;
$D1 = ;
}

Besser ist es aber du setzt $/ gleich so, dass immer von Leerzeilen
getrennte Blöcke eingelesen werden, in etwa so (ungetested):

open IN, '<', $datei1;
local $/ = "";
my @in = ;
close IN;
open OUT, '>', $datei2;
chomp @in;
print OUT join "\n\n", reverse @in;
close OUT;

falls der letzte Eintrag auch noch mit einer Leerzeile endet, kannst du den
chomp/join Zirkus weglassen

Jörg

Re: html-Tabelle splitten

am 19.03.2006 16:35:49 von Hago Ziegler

Hallo Jörg,

danke, hat geklappt.

Gruß, Hago