diff options
Diffstat (limited to 'Aufgabe5')
| -rw-r--r-- | Aufgabe5/skript5.pl | 57 |
1 files changed, 37 insertions, 20 deletions
diff --git a/Aufgabe5/skript5.pl b/Aufgabe5/skript5.pl index b052afc..4ec4bee 100644 --- a/Aufgabe5/skript5.pl +++ b/Aufgabe5/skript5.pl @@ -32,7 +32,7 @@ use Storable; # persistence for Perl data structures no warnings "once"; # einmalige Benutzung von interwork_56_64bit: $Storable::interwork_56_64bit = 1; # notwendig bei 64-Bit-Systemen -my %reverseIndex; +my $reverseIndex = {}; my $reverseIndexFile = '.index'; @@ -40,8 +40,7 @@ if (-e $reverseIndexFile) { print "Load index from File.\n"; - my $reverseIndexPtr = retrieve $reverseIndexFile; - %reverseIndex = %$reverseIndexPtr; + $reverseIndex = retrieve $reverseIndexFile; } else { @@ -59,7 +58,7 @@ else foreach my $wordFileName (@documentList) { - $reverseIndex{'#'.$wordFileId} = $wordFileName; + $reverseIndex->{'#'.$wordFileId} = $wordFileName; open my $wordFile, '<', $wordFileName or die "$0 : failed to open input file '$wordFileName' : $!\n"; @@ -75,32 +74,50 @@ else foreach my $word (getWords($fileContent, \%stoplist)) { - ${$reverseIndex{$word}}->{$wordFileId}++; + ${$reverseIndex->{$word}}->{$wordFileId}++; } $wordFileId++; } - store \%reverseIndex, $reverseIndexFile; + store $reverseIndex, $reverseIndexFile; } #print Dumper(%reverseIndex); -print "Suchwort: "; -my $eingabe = <>; +my $eingabe; +do{ + print "Query (q=quit): "; + $eingabe = <>; -chomp $eingabe; -$eingabe = lc $eingabe; + chomp $eingabe; + $eingabe = lc $eingabe; -if(exists $reverseIndex{$eingabe}) -{ - print "Suchwort '" . $eingabe . "' --- gefundene Dokumente: \n"; - foreach my $fileId (sort keys ${$reverseIndex{$eingabe}}) + if ($eingabe ne 'q' && $eingabe !~ /^#/) { - printf "\t%5d : %30s = %3d\n", $fileId, $reverseIndex{'#'.$fileId}, ${$reverseIndex{$eingabe}}->{$fileId}; + print "Search started...\n"; + if (exists $reverseIndex->{$eingabe}) + { + print "Suchwort '" . $eingabe . "' --- gefundene Dokumente: \n"; + my $i = 1; + foreach my $fileId (sort keys ${$reverseIndex->{$eingabe}}) + { + printf "\t%5d : %30s = %3d\n", $i++, $reverseIndex->{'#'.$fileId}, ${$reverseIndex->{$eingabe}}->{$fileId}; + if ($i % 5 == 0) + { + print "\t... weiter [j/n]\n"; + my $next = <>; + chomp $next; + if ($next ne 'j') + { + last; + } + } + } + } + else + { + print "Suchwort '" . $eingabe . "' nicht gefunden\n"; + } } -} -else -{ - print "Suchwort '" . $eingabe . "' nicht gefunden\n"; -} +}while ($eingabe ne 'q'); |
