$domain = 'bugs.domain.net'; $pattern = 'closes:\s*(?:bug)?\#\s*\d+(?:,\s*(?:bug)?\#\s*\d+)*'; while (<>) { push (@commit, $_); } foreach my $line (@commit) { if ($line =~ m/$pattern/ig) { $line =~ s/^.*($pattern).*$/$1/ig; $line =~ s/^closes:\s*//ig; @tmp = split(/,/, $line); foreach my $bug (@tmp) { chomp $bug; $bug =~ s/[\#\s]//g; push (@closes, $bug); } } } if ($#closes <= 0) { exit 0 }; open(MAIL, "|/usr/bin/mail control\@$domain"); foreach my $bug (@closes) { print MAIL "close $bug\n"; # make the list of submitters here while we're already iterating through # the list push (@submitters, "$bug-submitter\@$domain"); } print MAIL "thanks\n"; close MAIL; $to = join ' ', @submitters; open MAIL, "|/usr/bin/mail $to"; foreach (@commit) { print; } close MAIL;