use strict; use warnings; my $s = $ARGV[0]; shift @ARGV; my $y1 = $ARGV[0]; shift @ARGV; my $y2 = $ARGV[0]; shift @ARGV; my $strip=1; if (defined $ARGV[0] && $ARGV[0] ne ""){ $strip = $ARGV[0]; shift @ARGV; } my (%mods, %mod2mr, %mr2mod, %mr2stmp); my (%thcy, %mod2y); my $fnam="$s.$y1-$y2"; my %f2f; open (A, "aa1"); while(){ chop(); my ($mr,$auth,$com,$aem,$cem,$lines,$at,$ct,$file,$cmt) = split(/\;/, $_, -1); if ($file =~ /([^\{]*)\{([^ ]*) \=\> ([^\}]*)\}(.*)/){ my $a = "$1$2$4"; my $b = "$1$3$4"; $f2f{$a} = $b; }else{ if ($file =~ /([^\= ]*) \=\> (.*)/){ my $a = "$1"; my $b = "$2"; $f2f{$a} = $b; } } } open (A, "aa1"); while(){ chop(); my ($mr,$auth,$com,$aem,$cem,$lines,$at,$ct,$file,$cmt) = split(/\;/, $_, -1); next if ($file =~ / \=\> /); $file = $f2f{$file} if defined $f2f{$file}; my $year = $at/3600/24/365.25+1970; if ($year < $y1 || $year > $y2+1){ next;} print "$mr\;$file\;$year\n"; my $y = int ($year); my $mod = $file; $mods{$mod}++; $thcy{$mod} = 1; $mod2y{$mod}{"$y"}++; if (!defined $mod2mr{$mod}) { $mod2mr{$mod} = $mr; }else{ if ($mod2mr{$mod} =~ /\b$mr\b/){}else{ $mod2mr{$mod} .= "\;$mr"; } } if (!defined $mr2mod{$mr}) { $mr2mod{$mr} = $mod; }else{ if ($mr2mod{$mr} =~ /\b$mod\b/){ }else{ $mr2mod{$mr} .= "\;$mod"; } } $mr2stmp{$mr} = $at; } print STDERR "done reading delta\n"; my $i=0; open (A, ">$fnam.cds"); foreach my $key (sort keys %mods){ $mods{$key} = $i; my $thc = $thcy{$key}+0; my $ny = scalar(keys %{ $mod2y{$key} }); if ($ny>0){ $thc = $thc/$ny; } #print A "$i $thc $key\n"; print A "$i 1 $key\n"; $i++; } open (A, ">$fnam.dsc"); print A "$i ". scalar(keys %mr2mod)."\n"; $i = 0; open (A, ">$fnam.asc"); open (B, ">$fnam.ascnam"); foreach my $key (keys %mr2mod){ my @modules=split(/\;/, $mr2mod{$key}); print B "$i\;$key"; $i++; print A scalar (@modules) ." $mr2stmp{$key}"; foreach my $m (@modules){ print A " $mods{$m}"; print B "\;$m"; } print A "\n"; print B "\n"; }