foreach my $test (@test) { my ($condition,$persons) = ($2,$3) if($test =~ /(positive for )?(\w+).*\((.*)\)/i); # $1 capture will either be "positive for" or empty $persons =~ s/\s+//g; # omit spaces $persons =~ s/,/;/g; # changes any commas to semi-colons to have a common separator my @persons = split /;/, $persons; foreach my $person (@persons) { print "$person\t|| $condition\n"; } }