+ $dbh->begin_work;
+ my $f = $self->{f};
+ while (<$f>) {
+# print;
+ unless ($state) {
+ $state = 'ZC' if /^ZCZC/;
+ } elsif ($state eq 'ZC') {
+ if (/\b(ARLD\d+)\b/) {
+ $self->{id} = $1;
+ $state = 'id';
+ }
+ } elsif ($state eq 'id') {
+ if (/^Newington\s+CT\s+(\w+)\s+(\d+),\s+(\d+)/i) {
+ $state = 'date' ;
+ $self->{date} = str2time("$1 $2 $3") if $state eq 'date';
+ }
+ } elsif ($state eq 'date') {
+ if (/^$self->{id}/) {
+ last unless /DX\s+[Nn]ews\s*$/;
+ $state = 'week';
+ }
+ } elsif ($state eq 'week') {
+ $state = 'weekro' if /^This\s+week/;
+ } elsif ($state eq 'weekro') {
+ if (/^\s*$/) {
+ $state = 'para';
+ $self->{para} = "";
+ }
+ } elsif ($state eq 'para') {
+ if (/^\s*$/) {
+ if ($self->{para}) {
+ $self->{para} =~ s/^\s+//;
+ $self->{para} =~ s/\s+$//;
+ $self->{para} =~ s/\s+/ /g;
+ $self->insert;
+ $self->{para} = "";
+ $count++;
+ }
+ } elsif (/^THIS\s+WEEKEND/) {
+ last;
+ }
+ chomp;
+ s/^\s+//;
+ s/\s+$//;
+ $self->{para} .= $_ . ' ';
+ }
+ }
+ $dbh->commit;
+ $self->{f}->close;
+ delete $self->{f};
+ return $count;