my %hash; for (@array) { if (/^([^,]+)(?:,(.*))?$/) { $hash{$1} = $2; } } #### my %hash; /^([^,]+)(?:,(.*))?$/s && ($hash{$1} = $2) for @array;