+} # onkey
+
+
+our %modules;
+{
+ my %modskip;
+ $modskip{substr $_, 1}++ for grep /^-/, @ARGV;
+ opendir my $moddir, ".";
+ for my $module (sort readdir $moddir) { # glob "*.pm"
+ $module =~ /^\d{2}_([a-z0-9-]+)(?:_(\w+))?\.pm$/ or next;
+ # files named 00_class_name.pm; ($1, $2) = (class, name)
+ next if exists $modskip{$1} or $2 && exists $modskip{$2};
+ next if defined $modules{$1}; # no such module already loaded
+ defined ($_ = do $module) # return value means no errors
+ ? (ref $_ and $modules{$1} = $_, $modules{$1}{name} = $2 || "")
+ : print STDERR $@, "error loading $module\n\n";
+ } # load modules
+ closedir $moddir;
+} # find external modules
+
+printf STDERR "DCT %s by Shiar (%s)\n", $VERSION, join "; ",
+ map join(" ", grep $_, $_, $modules{$_}{name}, $modules{$_}{version}),
+ keys %modules;
+
+
+$_->() for @{$hook{init}};
+
+$hook{main}->();