my @lines = ( 'notmarker ', 'marker ', 'notmarker ', ); foreach (@lines) { chomp; if (my @matches = (/(?:^marker\s|\G)<(.*?)>(?: |$)/g)) { print join(', ', @matches)."\n"; } }