use strict;
use Getopt::Long;
-my $byline = undef;
+sub parsing () { 1; }
+sub waiting () { 2; }
+my $state = parsing;
+
my @more;
my $append;
my $debug;
}
sub add_more_bylines {
- if (@more && !defined $append) {
+ if (!defined $append) {
my %names = map { $_->[1] => 1 } @more;
my %map = ();
my @append;
}
while (<>) {
- if (/^[-A-Za-z]+-by: /) {
- $byline = 1;
- } elsif ($byline) {
- add_more_bylines();
- $byline = undef;
- } else {
- $byline = undef;
- }
- print;
-}
-if ($byline) {
- add_more_bylines();
+ if ($state == parsing) {
+ if (/^[-A-Za-z]+-by: /i || /^Cc: /i) {
+ $state = waiting;
+ }
+ } elsif ($state == waiting) {
+ if (/^[-A-Za-z]+-by: /i || /^Cc: /i) {
+ $state = waiting;
+ } else {
+ add_more_bylines();
+ $state = parsing;
+ }
+ }
+ print;
}