in reply to Help in using arrays

You can set up a regular expression that will match any of the elements of @all then read each line and split, passing the original line and each column out of a map to grep the second columns that match, finally maping out the original line and printing it.

use strict; use warnings; my @wanted = qw{7723 7725 9908 7765 7874}; my $rxExtract; { local $" = q{|}; $rxExtract = qr{\b@wanted\b}; } print map { $_->[0] } grep { $_->[2] =~ $rxExtract } map { [ $_, split ] } <DATA>; __END__ 77876 8543 CA84985 54E 77873 8003 CA84985 54E 77875 7725 CA84985 54E 77872 8511 CA84985 54E 77873 8123 CA84985 54E 77822 9908 CA84985 54E 77819 8503 CA84985 54E 77826 8040 CA84985 54E 77822 7874 CA84985 54E 77884 8543 CA84985 54E 77809 7211 CA84985 54E

The output is

77875 7725 CA84985 54E 77822 9908 CA84985 54E 77822 7874 CA84985 54E

I hope this is of use.

Cheers,

JohnGG