sub execSubroutine { my $sub = shift; my (@array, $scalar); if (wantarray) { @array = &{$sub}(@_); return @array if (@array != 1); $scalar = $array[0]; } else { $scalar = &{$sub}(@_); } my $rval = $scalar; # If we have a ref de-reference and return. if (my $type = ref($rval)) { return @$rval if ($type eq 'ARRAY'); return %$rval if ($type eq 'HASH'); } # Otherwise return a scalar return $rval; }