Hallo alle!
Ich brauche eure Hilfe. Ich bin eine Anfängerin in Perl und soll ein Programm schreiben, das die Eingabe von zwei Wörtern fordert und dann sollen die Dateien von einem bestimmten Verzeichniss nach diesen Wörtern durchgeschaut werden. Dazu habe sollen die Hash-referenzen benutz werden. Ein Teil des Programms ist schon fertig, aber es funktioniert nur mit einem Wort, wenn ich nach zwei Wörtern suche, dann ist bei mir im Kopf alles durcheinander, ich verstehe einfach nicht wie ich die Eingabe in array speichern soll, dann sagen, such nach dem ersten Element von array in den Dateien aus dem Verzeichniss, dann nach dem Zweiten, und wenn die beiden Elemente in einer Datei auftauchen, dann soll ausgegeben werden Element 1 und Element2 sind in X enthalten. Könnte mir vielleicht hier jemand dabei helfen und das Programm verändern, so dass man nach zwei Wörtern suchen kann?
my %index;
my @array;
my @files = ;
foreach $file (@files)
{
open FILE_HANDLE, „$file“ or die „$!\n“;
foreach $line () {
$line =~ s/ü/ue/g;
$line =~ s/Ü/ue/g;
$line =~ s/ä/ae/g;
$line =~ s/Ä/ae/g;
$line =~ s/ö/oe/g;
$line =~ s/Ö/oe/g;
$line =~ s/ß/ss/g;
@array = split(/\W/, $line);
foreach $wd (@array) {
if($wd =~ /[A-Za-z]/) {
$wd = lc($wd);
$index{$wd}->{$file}++;
}
}
}
close FILE_HANDLE;
}
print „Nach welchem Wort soll gesucht werden?\n“;
my $input =;
chomp $input;
$input =~ s/ü/ue/g;
$input =~ s/Ü/ue/g;
$input =~ s/ä/ae/g;
$input =~ s/Ä/ae/g;
$input =~ s/ö/oe/g;
$input =~ s/Ö/oe/g;
$input =~ s/ß/ss/g;
$wd = lc $input;
if (exists $index{$wd}) {
print „Das Wort wurde gefunden!\n“;
$files = $index{$wd};
foreach $file(keys %$files)
{
print „Das Wort ‚$input‘ kommt in Datei ‚$file‘ $$files{$file} mal vor.\n“;
}
}
else {
print „Das Wort wurde nicht gefunden!\n“;
}