use 5.010; ... my %params; my @parts = split '.', $mystring; $params{cheese} = $parts[0]; $params{country} = $parts[1]; $params{state} = $parts[2]; $params{town} = $parts[3]; doSumpton(%params); ... sub doSumpton { my %params = @_; $params{cheese} //= '-- bad cheese --'; # Provide cheesy default print "Cheese: $params{cheese}\n"; }