use strict; use warnings; use vars qw/@array/; $_ = "This is list number 12. It contains apples, pears, peaches. Total cost is 5."; if ( m/contains\s+ (?:(\w+)(?{push @array, $^N}),\s+)* (?:(\w+)(?{push @array, $^N})\.\s+\b) /x ) { print "@array\n"; }