次のデータがあるとします
cluster1:d(A)、f(C)s、(A)
cluster2:r(D)、h(D)、f(A)
これを出して欲しい
出力:
cluster1:A->2
cluster1:C->1
cluster2:D->2
cluster2:A->1
これが私の試みですが、正しくありません。文字を数えようとしている部分には、コードを修正できないという問題があります。非常に大きなコードの一部であり、正確に多次元のハッシュが必要です。
use strict;
use Data::Dumper;
my %count;
while (<DATA>) {
my %HoH;
my ( $cluster, $ch ) = split (/:/,$_);
$HoH{$cluster}={split /[()]+/,$ch};
for my $clust ( keys %HoH ) {
for my $character ( keys %{ $HoH{$clust} } ) {
$count{$clust}{$HoH{$clust}{$character}}++;
}
}
}
print Dumper(\%count);
foreach my $name (sort keys %count) {
foreach my $subject (keys %{$count{$name}}) {
print "$name:$subject->$count{$name}{$subject}\n";
}
}
データ
cluster1:d(A)、f(C)s、(A)
cluster2:r(D)、h(D)、f(A)