Thread Eingabe über <STDIN>: Probleme mit langer Eingabe (2 answers)
Opened by sKy at 2007-04-04 17:25

sKy
 2007-04-04 17:25
#75681 #75681
User since
2006-12-05
10 Artikel
BenutzerIn
[default_avatar]
Ich habe ein Skript geschrieben mit dem man Worte /Sätze/Teilsätze
aus einem Array aus Textdatein herausfinden kann.

Sprich, gibt einen Satz oder ein Wort ein und es wird angezeigt ob es in einem
der Textdateien vorkommt. (Wird später weiterverarbeitet)

Es klappt auch ziemlich gut.
Wenn ich aber nach Sätzen suchen will die auf der Konsole abgebrochen werden findet er sie nicht (obwohl ich weiß dass diese von mir gewählten Beispielsätze vorkommen.)

Beispiel:
Ein derartiger Frieden w"are nach seinen Worten instabil.

wird gefunden ("a bedeutet hier ä)

Das vor zwei Jahren ge"anderte Asylrecht steht seit heute auf dem Pr"ufstand des Bundesverfassungsgerichts in Karlsruhe.

wird nicht gefunden obwohl es so drinsteht.

Gechompt habe ich auch hier mein Codeausschnitt:

Variablen sind definiert am Anfang
Code: (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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
@textkorpora=glob('dlf*.txt');
$anzahl=scalar(@textkorpora);

$suchstring=<STDIN>;
chomp($suchstring);

open(DATEI,'>',"satz_suche.txt");
close(DATEI);

open(FILE,'>',"satz_suche_ergebnis.txt");
print FILE "-------------------------------------\n";
print FILE "[Suchanfrage]\n";
print FILE "$suchstring\n";
print FILE "-------------------------------------\n\n";
print FILE "[Lokalisiert in den Dateien]\n\n";
close(FILE);

while ($textpos <= $anzahl)
{

open(TEXTDAT,'<',@textkorpora[$textpos]);
while(<TEXTDAT>)
{
chomp($_);

$korpustext=$korpustext.$_;

}
close(TEXTDAT);



if($korpustext =~ /$suchstring/g)
{
open(DATEI,'>>',"satz_suche.txt");
print DATEI "@textkorpora[$textpos]\n";
close(DATEI);

open(FILE,'>>',"satz_suche_ergebnis.txt");
print FILE "@textkorpora[$textpos]\n";
$textpos++;
$gefunden++;
$korpustext="";
close(FILE);
}
else
{
$textpos++;
$korpustext="";
}
}

if ($gefunden==0)

{
open(FILE,'>>',"satz_suche_ergebnis.txt");
print FILE "Fehler: ~Benutzereingabe wurde nicht gefunden.~\n";
close(FILE);
print "Ausdruck/".$suchstring. "/\nwurde nicht gefunden.\n";
}
else
{
open(FILE,'<',"satz_suche.txt");
while(<FILE>)
{
chomp($_);
s/txt/tones/g;
push(@tonesarray,$_);
s/tones/syllables/g;
push(@silbenarray,$_);
}
close(FILE);


Findet ihr einen Fehler?

Gruß
Timo

View full thread Eingabe über <STDIN>: Probleme mit langer Eingabe