rg内の各MLの参加者をもとに、
各kgごとのつながりを調べよ。
egichan
yuuki
…
ami-ta
「MLに所属する人のリスト」を「ある人が所属するMLのリスト」に変換。
例:ami-taの場合
neco
sprng
soi
opendir DIR, "." or die "serious dainbreamage: $!";
while( my $kg = readdir(DIR) ) {
next if $kg =~ /^\.\.?$/;
push @KGLIST, $kg;
open( KG, $kg ) or die "can't open datafile: $!";
while(<KG>) {
chomp;
next if /^(#.*)?$/;
s/^([^@]+)(@|$)/$1/;
if ( $DB{$1} ne "" ) {
$DB{$1} .= "\t";
}
$DB{$1} .= "$kg";
}
close( KG );
}
closedir DIR;
例:haruhitoさん(参加ML:insat, sprng)
この場合、INSAT と SPRNG の間に一人橋渡しをする人が居るので、
以下のように表の INSAT − SPRNG の欄に 1 を加える。
例:ami-ta(参加ML:neco, sprng, soi)
同様に、neco、SPRNG、SoI の間にそれぞれ橋渡しをしていると考える。
# 集計
foreach my $key (sort keys %DB) {
my @kg = split /\t/, $DB{$key};
for( my $i = 0; $i <= $#kg; $i++ ) {
for( my $j = 0; $j <= $#kg; $j++ ) {
if( $i == $j ) {
next;
}
$DATA{"$kg[$i]:$kg[$j]"} ++;
}
}
}
# 行列で表示
@KGLIST = sort @KGLIST; # 配列を整列させる。
print "\t" , (join "\t", sort @KGLIST), "\n"; # 上の凡例
for( my $i = 0; $i <= $#KGLIST; $i++ ) {
print $KGLIST[$i]; # 左の凡例
for( my $j = 0; $j <= $#KGLIST; $j++ ) {
print "\t" , $DATA{"$KGLIST[$i]:$KGLIST[$j]"};
}
print "\n";
}
- | ECN | HORN | I-car | INSAT | KMSF | MAO | Mcng | SING | STREAM | comcom | educe | neco | soi | sprng |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ECN | - | 4 | 0 | 0 | 4 | 0 | 6 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
HORN | 4 | - | 0 | 0 | 5 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
I-car | 0 | 0 | - | 2 | 0 | 2 | 1 | 9 | 6 | 1 | 0 | 0 | 3 | 1 |
INSAT | 0 | 0 | 2 | - | 0 | 1 | 0 | 3 | 2 | 0 | 1 | 0 | 2 | 1 |
KMSF | 4 | 5 | 0 | 0 | - | 1 | 5 | 3 | 5 | 0 | 0 | 3 | 0 | 0 |
MAO | 0 | 0 | 2 | 1 | 1 | - | 0 | 2 | 5 | 1 | 0 | 2 | 1 | 1 |
Mcng | 6 | 5 | 1 | 0 | 5 | 0 | - | 1 | 0 | 0 | 1 | 0 | 1 | 0 |
SING | 0 | 0 | 9 | 3 | 3 | 2 | 1 | - | 12 | 1 | 2 | 4 | 1 | 1 |
STREAM | 0 | 0 | 6 | 2 | 5 | 5 | 0 | 12 | - | 2 | 11 | 5 | 8 | 3 |
comcom | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 2 | - | 1 | 1 | 0 | 1 |
educe | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 2 | 11 | 1 | - | 5 | 7 | 4 |
neco | 0 | 0 | 0 | 0 | 3 | 2 | 0 | 4 | 5 | 1 | 5 | - | 7 | 12 |
soi | 1 | 1 | 3 | 2 | 0 | 1 | 1 | 1 | 8 | 0 | 7 | 7 | - | 6 |
sprng | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 3 | 1 | 4 | 12 | 6 | - |