my @alle_saetze; my @dateien; for my $file (@textdateien) { local $/=''; open(DAT, '<',$file) or die "'$file' $!\n"; # Datei ganz einlesen (siehe oben $/) # und Zeilenumrüche entfernen # (Habe ich bei meinem Beispiel vergessen :-/ ) (my $data=)=~s/[\r\n]+//gs; close(DAT); my @saetze = split/(?<=[\.!?])\s*/, $data; #Filtert Sätze raus for my $satz (@saetze) { # nach dem Satz im Array @alle_saetze suchen my $pos=0; $pos++ while($alle_saetze[$pos] ne $satz && $pos<@alle_saetze); # kein gleicher Satz gefunden, # da die Schleife alle Sätze durchgegangen ist. if( $pos == @alle_saetze); { push(@alle_saetze,$satz); push(@dateien,[$file]); } # Den Satz gibt es schon. else { push(@$dateien[$pos],$file); } } } # Die Ausgabedatei open(DATEI, '>', 'out.txt') or die 'out.txt: $!\n'; print "$i:$alle_saetze[$i]\n" for my $i (0..$#alle_saetze); close(DATEI); #Enthält die ID und die Dateinamen open DATEI ,'>', 'verweis.txt' or die 'verweis.txt: $!\n'; print "$i:".join(',',@$dateien[$i])."\n" for my $i (0..$#dateien); close DATEI;