use strict; use warnings; my @grabArray; while (my $current_line = ) { next if $current_line !~ /Grab this\s+'([^']+)'/; push @grabArray, $1; } print join "\n", @grabArray; __DATA__ Grab this 'test1' (repeat/new) many lines Grab this 'test2' (repeat/new) many lines Grab this 'test3' (repeat/new) #### test1 test2 test3