my %param; foreach (param) { # store all parameters in arrays initially push @{$param{$_}}, param($_); } foreach (keys %param) { # promote single element arrays $param{$_} = $param{$_}->[0] if @{param{$_}} == 1; }