#!/usr/bin/perl # Bryan Bishop 2009-01-20 # assembleTable.pl # RAM-only version. Should be much faster. #$dirname = "rulelists"; sub rulesInCommon { (my $f, my $s) = @_; #print "comparing $f to $s"; # open(FIRST, "; # close(FIRST); #open(SECOND,"; #close(SECOND); # If you use a space ' ' to split on, it will actually split on any kind of space including newlines and tabs (regular expression /\s+/) rather than just a space. # http://perlmeme.org/howtos/perlfunc/split_function.html @rules1 = split(' ', $f); @rules2 = split(' ', $s); my $totalInCommon=0; @doneNumbers = (); foreach my $num (@rules1) { $doNotGo = 0; foreach my $testn (@doneNumbers) { if ($num eq $testn) { $doNotGo = 1; } } if ($doNotGo == 0) { foreach my $num2 (@rules2) { $doNotGo2 = 0; foreach my $testn (@doneNumbers) { if ($num2 eq $testn) { $doNotGo2 = 1; } } if($doNotGo2 == 0) { if($num eq $num2) { $totalInCommon += 1; push(@doneNumbers, $num); push(@doneNumbers, $num2); } } } } } return $totalInCommon; } open(FIO, "; close(FIO); foreach my $line2 (@stuff) { #print $line; chomp($line2); @l2 = split(/:/, $line2); @l3 = split(/\./, @l2[0]); @part = split(/cfg/, @l3[0]); # @part[1] is the ID of the generated graph. #print @part[1],"\n"; # $l2[1] contains the rule number. $ruleNumber = $l2[1]; #chomp($ruleNumber); #print $ruleNumber; #print $l2[0], " = ", $graphs{$l2[0]}, " .. and now: "; #$graphs{$part[1]} .= "$ruleNumber"; $ruleNumber = $ruleNumber."\n"; #print "@part[1] was made from: $ruleNumber\n\n\n"; $vars{"my_@part[1]"} = $vars{"my_@part[1]"} . "$ruleNumber"; #print ",$ruleNumber\n"; #print $graphs{$l2[0]}; # print $l2[0], "\n"; #$ruleNumber; } open(TABLE, ">table.txt"); foreach my $vari (keys %vars) { if($vari =~ "my_") { #$vari2 = $vari; #$vari2 =~ s/my_//; #print "$vari2: ", $vars{$vari}, "\n"; foreach my $vari3 (keys %vars) { if($vari3 =~ "my_") { print TABLE rulesInCommon($vars{$vari},$vars{$vari3}), ","; } } print TABLE "\n"; } } close(TABLE);