Tag Bluesky.
ich habe ein keyword auf das er reagieren soll. das tut er auch, die keywordliste ist ne txt datei, da steht dann computer = 1 zum beispiel
Also so:
--- Auszug aus keywords.txt ---
computer=1
wenn ich jetzt die antwort aus der antwort txt datei mit z.B. 1= Schmeiß deinen Computer aus dem fenster haben will wie zum Teufel geht das...
Also so:
--- Auszug aus antwort.txt ---
1=Schmeiß deinen Computer aus dem Fenster
Richtig verstanden?
Er muss also computer finden, das hab ich mit $ausdruck = quotemeta($ausdruck); gemacht
Was willst du hier mit quotemeta? Du öffnest die Textdatei keywords.txt und liest die dort gegebenen Werte ein, z.B. in einen Hash:
Keywords einlesen
Für das Beispiel ergäbe sich folgender Hash-Eintrag
$keywords{'computer'} = '1'
my %keywords;
open(KEYWORDS, "<keywords.txt") || die $!;
while(<KEYWORDS>) {
chomp($_);
my($key,$val) = split(/=/,$_);
$keyword{$key} = $val;
}
close KEYWORDS;
Antworten einlesen
Für das Beispiel ergäbe sich folgender Hash-Eintrag
$answers{'1'} = 'Schmeiß den Computer aus dem Fenster'
my %answers;
open(ANTWORT, "<antwort.txt") || die $!;
while(<ANTWORT>) {
chomp($_);
my($key,$val) = split(/=/,$_);
$answers{$key} = $val;
}
close ANTWORT;
Hashes zusammenführen
Durchgehen des keywords-Hashes
while ( my ($key,$val) = each(%keywords) {
# Pruefen, ob zum Wert eines Hashes ein
# Eintrag im answers-Hash existiert
# Falls ja, wird dem Wert des keywords-Hashes
# der Wert des answers-Hashes zugewiesen
if( exists($answers{$val}) ) {
$keywords{$key} = $answers{$val};
}
}
print $keywords{'computer'};
Liefert die Ausgabe »Schmeiß den Computer aus dem Fenster«.
Ich habe das jetzt so runtergetippt, Fehler vorbehalten. Aber das Prinzip sollte klar sein, oder?
Siechfred
»Sie kochten heimlich mit Wasser und tranken öffentlich Wein.«