-sub _parse
-{
-my($self,$data,@headers)=@_;
-
- my $re=join("(.*?)(\r\n)?",map("\Q[$_]\E\r\n",@headers));
- $re=qr/^$re/s;
- my @r=();
- while (my @items=($data=~/$re/s)) {
- my %h=();
- for my $i (0..$#headers) {
- $h{$headers[$i]}=(!$items[2*$i+1] ? undef : $items[2*$i+0])
- }
- push @r,\%h;
- $data=substr($data,length $&);
- }
- die "Unrecognized data (parsing ".join("/",@headers)."): $data" if $data;
- return @r;
-}
-
-sub import
-{
-my($self,$data)=@_;
-
- $self=$self->new() if !ref $self;
- push @{$self->{"data"}},map({
- [ $self->_parse($_->{"RECORD"}."\r\n","FIELD","FIELD-NAME","FIELD-DATA","FIELD-END") ];
- } $self->_parse($data,"RECORD","RECORD-END"));
- return (wantarray() ? @{$self->{"data"}} : $self->{"data"});
-}