#!/usr/bin/perl -w
use XML::Parser;

## Set handlers for xml parser
 my $parser= XML::Parser->new(Handlers=>{
      Start=> \&elem_start,
      End  => \&elem_end,
      Char => \&char_data});

%groups=();

## Parse input
 $filename=shift @ARGV or die "Use $0 file.dbl\n";
 chomp ($filename);
 open(IN, "cat $filename | gzip -d |");
  $parser->parse(*IN);
 close(IN);
 
foreach (sort keys %groups)
{
 print "$_ - ".$groups{$_}." records\n";
}
 
## Element start handler
 sub elem_start
 {
  my ($expat,$name,%attr)=@_;
  if ($name eq "record")
     {
      %rule=();
      return(0);
     }
   $option=$name     
 }
 
## Element end handler
 sub elem_end
 {
  my ($expat,$name)=@_;

  if ($name eq "record")
     {
      unless (exists($groups{$rule{"group"}})) {$groups{$rule{"group"}}=0;}
      $groups{$rule{"group"}}++;
      return(0);
     }
  $option="null";
 } 

sub char_data
 {
   my ($expat,$text)=@_;
   if ($option eq "null") {return (0);}
    $rule{$option}.=$text;
  }
	  