use strict; use warnings; my @units = qw(foo.pm bar.pm); # Alle Funtionen heißen sub foo my $arg = 0; foreach my $unit(@units){ my $packname = $unit; $packname =~ s/\W//g; my $source = do{ my $fh = IO::File->new; $fh->open($unit, "r") or die $!; read($fh, my $buffer, -s $fh); $fh->close; "package $packname;\n".$buffer; }; eval "$source" or die $@; my $coderef = $packname->can('foo'); $coderef->(++$arg); }