sub readlexicon { my $fn=shift; open(IN,$fn); my %lexicon=(); my $contents=join('',); close(IN); $contents=~s/package Apache\:[^\;]+//; $contents=~s/use base[^\;]+//; eval($contents.'; %lexicon=%Lexicon;'); delete $lexicon{'_AUTO'}; delete $lexicon{'char_encoding'}; delete $lexicon{'language_code'}; return %lexicon; } my %master=(); foreach (<*.pm>) { print "Reading: ".$_."\n"; %master=(%master,&readlexicon($_)); } foreach my $fn (<*.pm>) { print "Synching: ".$fn."\n"; my %lang=&readlexicon($fn); system ("cp $fn $fn.original"); open(IN,$fn.'.original'); open(OUT,'>'.$fn); my $found=0; while () { if ($_=~/\#\s*SYNCMARKER/) { $found=1; last; } print OUT $_; } if ($found) { print OUT "\n\#SYNC ".localtime()."\n"; foreach (sort keys %master) { unless ($lang{$_}) { print OUT (< '$_', ENDNEW } } print OUT "\n\#SYNCMARKER\n"; foreach () { print OUT $_; } } close (IN); close (OUT); }