Erzeugung der Indizes II

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

createmaildb.pl
my %entries = ();
foreach my $alias (@aliases) {
   add($alias->{email}, $alias->{fullname});
   foreach my $name (split /\s/, $alias->{fullname}) {
      add($name, $alias->{fullname});
      if (lc($name) ne $name) {
         add(lc($name), $alias->{fullname});
      }
   }
}

my %keyword;
tie(%keyword, 'DB_File', "byKey.db",
   O_RDWR|O_CREAT|O_TRUNC, 0660, $DB_HASH);
foreach my $key (keys %entries) {
   eval {
      $keyword{$key} = join($sep, keys %{$entries{$key}});
   };
   print "Error: $@\n" if $@;
}
untie %keyword;

sub add {
   my ($key, $fullname) = @_;
   ${$entries{$key}}{$fullname} = 1;
}

*Da bei populären Namen Listen von zugehörigen vollen Namen ziemlich lange werden können, wurde die entsprechende Zeile, die solche Einträge in die DBM-Datei einfügt, durch ein eval geschützt. Bei einer Berkeley DB müßte es normalerweise klappen -- aber bei anderen DBM-Dateien nicht unbedingt.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1996, 1998, 1999, 2000 Andreas Borchert, in HTML konvertiert am 07.02.2000