summaryrefslogtreecommitdiffstats
path: root/Aufgabe5
diff options
context:
space:
mode:
Diffstat (limited to 'Aufgabe5')
-rw-r--r--Aufgabe5/skript5.pl57
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');