insaniac][amano: ~ : perl -we 'use strict;my @d=([0,"BE"],[3,"BUS"],[4,"BUS2"]);my @a=map($_ , split(/,/, "BUS2,BE") ) ; my @b=map { my $mapkey=$_; map { $d[$mapkey]->[1] =~ /$a[$_]/ ? $d[$mapkey] : () } 0..$#a } 0..$#d; use Data::Dumper;print Dumper(@b);' $VAR1 = [ 0, 'BE' ]; $VAR2 = [ 4, 'BUS2' ]; insaniac][amano: ~ : perl -we 'use strict;my @d=([0,"BE"],[3,"BUS"],[4,"BUS2"]);my @a=map($_ , split(/,/, "BUS2,BE") ) ; my @b=map { my $mapkey=$_; map { $d[$mapkey]->[1] =~ /$a[$_]/ ? [@{$d[$mapkey]}] : () } 0..$#a } 0..$#d; use Data::Dumper;print Dumper(@b);' $VAR1 = [ 0, 'BE' ]; $VAR2 = [ 4, 'BUS2' ];