Dynamisches Laden von Modulen

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

Twister.pm
my %modules = ();

sub load_modules {
   foreach my $dir (@INC) {
      next unless -d $dir;
      next unless my $dir = new IO::Dir "$dir/Twister";
      while (defined(my $file = $dir->read)) {
         next unless $file =~ m{^(\w+)\.pm};
         my $name = $1;
         my $module = "Twister::$name";
         eval qq{
            require $module;
         };
         if ($@) {
            warn "failed to load or to register $module: $@\n";
         }
      }
   }
}

*load_modules() durchsucht das Twister-Verzeichnis nach ladbaren Modulen und versucht, diese zu laden.
 
*Das eval wird aus zwei Gründen benötigt: Erstens muß der Programmtext für das Laden zur Laufzeit generiert werden, da erst dann der Modulname bekannt ist. Zweitens ist es sinnvoll, nicht aufgrund eines nicht ladbaren Moduls auseinanderzufallen.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1996 - 2003 Andreas Borchert, in HTML konvertiert am 01.10.2003