in reply to filter an array with consecutive splits

This may work better:

$ perl -le' my @array = ( "x y.g z 123", "a b.f c 456", "d b.c w 321" ); my @include = ( "b", "q" ); my @keep = map { my $item = $_; my $key = ( split )[ 1 ]; map $key =~ +/\Q$_/ ? $item : (), @include } @array; print for @keep; ' a b.f c 456 d b.c w 321