@data = ; @extracted = (); foreach(@data){ while ($_ =~ s/(foo\d+)//) { push @extracted, $1; } } print join( ':', @extracted ), "\n" ; __DATA__ foo1 foo2 foo3 foo4 foo5 foo6 foo7 foo8 foo9 #### @data = ; my @extracted = grep { /foo\d+/ } map { split } @data ; print join( ':', @extracted ), "\n" ; __DATA__ foo1 foo2 foo3 foo4 foo5 zoot6 foo6 foo7 foo8 bar1 foo9