#!/usr/bin/perl
#
# scanfinder.pl - script to look through a set of diffraction data directories
#                 and find fourc scans with their names, scan numbers, counts.
#
# author: richard.t.jones at uconn.edu
# version: january 20, 2013

use FileHandle;
my $listing = new FileHandle;
$listing->open("ls */*_scan[0-9][0-9][0-9]_*|") || die;
my @listing = <$listing>;
$listing->close();

our %scan;
our %first;
our %last;
our %count;
my $lastscan;
foreach my $line (@listing) {
   chop $line;
   $line =~ s/.*\///;
   next unless ($line =~ /(.*)_scan([0-9]*)_([0-9]*).tiff/);
   if (!exists $scan{$1}) {
      $scan{$1} = [];
      $first{$1} = [];
      $count{$1} = [];
      unshift @{$scan{$1}},$2;
      unshift @{$first{$1}},$3;
      unshift @{$last{$1}},$3;
      unshift @{$count{$1}},1;
      $lastscan = $2;
   }
   elsif ($2 != $lastscan) {
      unshift @{$scan{$1}},$2;
      unshift @{$first{$1}},$3;
      unshift @{$last{$1}},$3;
      unshift @{$count{$1}},1;
      $lastscan = $2;
   }
   else {
      ${$last{$1}}[0] = $3;
      ++${$count{$1}}[0];
   }
}

foreach my $run (sort keys %scan) {
   for ($n=0; $n < @{$scan{$run}}; ++$n) {
      print "run $run scan ",${$scan{$run}}[$n],
            " has ",${$count{$run}}[$n],
            " entries ",${$first{$run}}[$n],
            " to ",${$last{$run}}[$n],
            "\n";
   }
}
