my $in_table = 0;
my $in_td = 0;
my $in_th = 0;
while (not $text =~ m/\G\z/gc) { # Noch kein Ende erreicht
if ( $text =~ m/\G<\s*table\b/igc ) { $in_table++ } # Wenn in table dann var incr
elsif ( $text =~ m/\G<\s*td\b/igc ) { $in_td++ } # wenn in td dann var incr
elsif ( $text =~ m/\G<\s*th\b/igc ) { $in_th++ } # wenn in th dann var incr
elsif ( $text =~ m{\G\s*td\s*>}igc ) { $in_td-- } # wenn td verlassen dann var decr
elsif ( $text =~ m{\G\s*th\s*>}igc ) { $in_th-- } # wenn th verlassen dann var decr
elsif ( $text =~ m/\G(?=\n)/gc ) { # Wenn ein Newline kommt...
$text =~ s{\G\n}{
} if not $in_table;
$text =~ s{\G\n}{} if $in_table && not ($in_td || $in_th);
$text =~ s{\G\n}{
} if $in_table && ($in_td || $in_th);
}
else { $text =~ m/\G./igcs } # Regex Engine ein Zeichen weiter Setzen
}