my %values = ( a => 'value a', b => 'value b', c => 'value c', d => 'value d', ); if( $str=~ m/(\S)\s(\S)\s(\S)\s(\S)/) { my @captured = ($1, $2, $3, $4); ($a,$b,$c,$d)= map { $values{ $_ } || $_ } @captured; }; print $a,"\n",$b,"\n",$c,"\n",$d;