#!/usr/bin/perl use strict; use warnings; my @dispatchtab = ( { moduldatei => 'test_extern.pl', aufruf => \&testsub, unit => 'test1', }, { moduldatei => 'test_extern2.pl', aufruf => \&testsub, unit => 'test2', }, ); for my $ref (@dispatchtab) { my $source = do{ my $fh = IO::File->new; $fh->open($ref->{moduldatei},'r') or die $!; read($fh, my $buffer, -s $fh); $fh->close; "package $ref->{unit};\n".$buffer; }; eval "$source"; UNIVERSAL::can($ref->{unit},$ref->{aufruf}); # statt $ref->{moduldatei} print $ref->{aufruf}->('a'); }