#!/usr/bin/perl use strict; use warnings; my @dispatchtab = ( { moduldatei => 'test_extern.pl', aufruf_sub => \&testsub, aufruf_neu => 'testsub', unit => 'test1', }, { moduldatei => 'test_extern2.pl', aufruf_sub => \&testsub, aufruf_neu => 'testsub', unit => 'test2', }, # hier sind natürlich noch ganz viele ); foreach my $ref (@dispatchtab) { # nur der Code innerhalb dieser Schleife darf geändert werden, sonst nichts! package $ref->{unit}; require $ref->{moduldatei}; # eval $ref->{aufruf_neu}."('a')"; UNIVERSAL::can($ref->{unit},$ref->{aufruf_neu}); # $ref->{moduldatei} auch wieder ohne Dateiendung }