#!/usr/bin/perl use strict; use warnings; use Carp; sub foo{ my %in = ( name => undef, vname => undef, ort => undef, suburb => '', @_); my @requires = qw(name vname ort); return eval{ foreach my $r(@requires){ croak qq('$r' not set) unless defined $in{$r}; } "@in{@requires}"; # das ist der return }; } my $li = foo( xname => 'Henne', vname => 'Horst', ort => 'Henneberg' ) or die $@; print "Angekommen: $li";