perl -e '@d=([0,"BE"],[3,"BUS"],[4,"BUS2"]); @a=map($_ , split(/,/, "BUS2,BE") ) ; @b=map { my $mapkey=$_; map { [@{$d[$mapkey]}] if $d[$mapkey]->[1] =~ /$a[$_]/ } 0..$#a } 0..$#d; use Data::Dumper;print Dumper(@b);' $VAR1 = ''; $VAR2 = [ 0, 'BE' ]; $VAR3 = ''; $VAR4 = ''; $VAR5 = [ 4, 'BUS2' ]; $VAR6 = ''; #### my @d=([0,"BE"],[3,"BUS"],[4,"BUS2"]); # some default values my @a=map($_ , split(/,/, "BUS2,BE") ) ; # a customer setting for instance my @b=map { my $mapkey=$_; map { [@{$d[$mapkey]}] if $d[$mapkey]->[1] =~ /$a[$_]/ } 0..$#a } 0..$#d; # @b will contain stuff that needs to be configured use Data::Dumper; print Dumper(@b);' __END__ gives the following output: $VAR1 = ''; $VAR2 = [ 0, 'BE' ]; $VAR3 = ''; $VAR4 = ''; $VAR5 = [ 4, 'BUS2' ]; $VAR6 = '';