#!/usr/local/bin/perl

# bibj: extract journal names from a BiBTeX database
#
# 17 Jan 92 -- Dana Jacobsen (dana@acm.org)
# 21 Jan 92 -- rewritten entirely in perl
# 25 Apr 92 -- using //o gained 4 times speed improvement

foreach $file (@ARGV) {
  
  open(IN, $file) || ((warn "Can't open $file: $!\n"), next);

  $replace = 's/\"\s*\#\s*\"//go;';   # string concat

  while (<IN>) {
    next if (!/^\s*\@st/io) && (!/^\s*jou/io);
    if (($name,$value) = /^\s*\@string{\s*(\S+)\s*=\s*(.*\")\s*}/io) {
      $name =~ s/(\W)/\\$1/g;   # quote special chars
      $value =~ s/(\W)/\\$1/g;
      $replace .= "s/\\b$name\\b/$value/go;\n";
    } else {
      study;
      eval $replace;
      $@ && die ("Error in eval, $@");
      if (($name) = /\s*journal\s*=\s*["{]\s*(.*)\s*["}],/io) {
        $rescount{$name}++;
      }
    }
  }
  close IN;
}


foreach $name (sort keys(%rescount)) {
  printf "%4d   %s\n",  $rescount{$name}, $name;
  $total += $rescount{$name};
}

print $total ? $total : "No", " journal entries.\n";
