Thread Probleme mit dem Speichern von Dateinamen (8 answers)
Opened by Timo_81 at 2007-01-20 17:58

topeg
 2007-01-20 19:11
#73394 #73394
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Für sowas sind Hashes genau gedacht:
Code (perl): (dl )
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
my %saetze_gefunden;
for my $file (@textdateien)
{
  # gesammte Datei einlesen
  local $/='';
  open (DATEI, '<', $file) or die "Konnte '$file' nicht öffnen ($!)\n";
  # Datei in sätze zerlegen
  (my $daten=<DATEI>)=~s/[\r\n]//gs;
  my @saetze_datei=split(/(?<=[\.!?])\s*/,$daten);
  close(DATEI);
  # Alle Sätze durchgehen und dem Hash als Schüssel werwenden.
  # Als Wert ist ein Array enthalten, das die Dateinamen aufnimmt.
  push(@{$saetze_gefunden{$satz}},$file) for my $satz (@saetze_datei);
}

open (REFDAT,'>','verweis.txt') or die "Konnte 'verweis.txt' nicht öffnen ($!)\n";
open (OUTDAT,'>','out.txt') or die "Konnte 'out.txt' nicht öffnen ($!)\n";
# Den Hash durchgehen und die Werte in die Dateien schreiben.
my $cnt=0;
for my $satz (keys(%saetze_gefunden))
{
  print OUTDAT "$cnt:$satz\n";
  print REFDAT "$cnt:".join(',',@{$saetze_gefunden{$satz}})."\n";
  $cnt++;
}
close (OUTDAT);
close (REFDAT);


EDIT: die zeile
Code: (dl )
my @saetze_datei=split(/(?<=[\.!?])\s*/,<DATEI>);
nach
Code: (dl )
1
2
  (my $daten=<DATEI>)=~s/[\r\n]//gs;
my @saetze_datei=split(/(?<=[\.!?])\s*/,$daten);
geändert, um die Zeilenumbrüche zu entfernen.\n\n

<!--EDIT|topeg|1169317516-->

View full thread Probleme mit dem Speichern von Dateinamen