The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use strict;
use LWP::Simple qw(mirror);

=pod

With this script we try to check if the files specifying the MAB2
standard have changed since the last download. If there are newer
files, they are downloaded and we call the external diff program to
see what has changed. Copying the changed file into the according
module is left to manual intervention.

=cut


my $baseurl = qq{ftp://ftp.ddb.de/pub/mab/};

my(%map) = qw(
  segm000   Base
  adressmab NULL
  gkdmab    gkd
  lokalmab  lokal
  notatmab  NULL
  pndmab    pnd
  swdmab    swd
  titelmab  titel
);

my $all304 = 1;
for my $doc (keys %map) {
  my $url = "$baseurl$doc.txt";
  my $code = mirror $url, "$doc.txt" or die "Could not get $url";
  warn "doc[$doc]code[$code]";
  $all304 = 0 unless $code == 304;
}

if ($all304) {
  print "No document has changed since last download.\n";
  exit;
}

for my $doc (keys %map) {
  next if $map{$doc} eq "NULL";
  local $/;
  open F, "$map{$doc}.pm" or die "Could not open $map{$doc}.pm: $!";
  my $pm = <F>;
  open F, "$doc.txt" or die "Could not open $doc.txt: $!";
  my $txt = <F>;
  close F;
  $pm =~ s/^.*__DATA__\n//s;
  if ($pm eq $txt) {
    print "Document $doc unchanged\a\n";
    sleep 2;
    next;
  }

  system "diff -u $map{$doc}.pm $doc.txt|less";
  print "Enter RET\n";
  my $foo = <>;
}