#!/usr/bin/perl use strict; use warnings; my @dispatchtab = ( { moduldatei => 'test_extern.pl', aufruf_neu => 'testsub', unit => 'unit1', referenz => defined, }, { moduldatei => 'test_extern2.pl', aufruf_neu => 'testsub', unit => 'unit2', returnval => defined, }, # hier sind natürlich noch ganz viele ); for my $ref ( @dispatchtab ) { # # besonderer Code folgt wegen des Problems der doppelten sub Namen und des darauf folgenden "...redefined at..." # dies ist nur eine Übergangslösung, bis alle sub's in sub's aufgelöst sind # Quelle: Linuxer: https://www.perl-community.de/bat/poard/thread/19514#ms_179778 # my ($back,%back); eval <<"EVAL_CODE"; package $ref->{unit}; require "$ref->{moduldatei}"; if ($ref->{returnval}) { $back = $ref->{aufruf_neu}->("$ref->{unit}"); print "Back: '$back'\n"; } else { $ref->{aufruf_neu}->("$ref->{unit}",\%back); print "Back: '$back{text}'\n"; } EVAL_CODE ; warn "$@\n" if $@; }