私は以下のサブルーチンOutputingReorderedVectorsを用意しています。ただし、コードは空白のファイルを出力するだけです。ハッシュ構造のキーから配列を構築する
は私はこの問題は、再注文chainRollupDocの第二レベルのハッシュからキーを含む、この次のコード・セグメントから来るべきだと思う
my @rollupArray = sort keys %chainRollupDoc;
my @reorderedSS =();
foreach my $i(0 .. $#rollupArray)
{
foreach my $cui (sort keys %{$chainRollupDoc->{$rollupArray[$i]}})
{
push @reorderedSS, $cui;
}
}
全体サブルーチンは、次
#####################################
sub OutputingReorderedVectors
#####################################
{
my $centroids = shift;
my $fileName = shift;
my $chainRollupDoc = shift;
my @rollupArray = sort keys %chainRollupDoc;
my @reorderedSS =();
foreach my $i(0 .. $#rollupArray)
{
foreach my $cui (sort keys %{$chainRollupDoc->{$rollupArray[$i]}})
{
push @reorderedSS, $cui;
}
}
my %attributes =();
foreach my $category (keys %$centroids)
{
foreach my $cui (keys %{$centroids->{$category}})
{
$features{$cui} = 1;
}
}
my @fullSpace = sort keys %attributes;
open(OUTPUT, "> $fileName");
foreach my $i(0 .. $#reorderedSS)
{
printf OUTPUT "\t%s", $reorderedSS[$i];
}
print OUTPUT "\n";
foreach my $i (0 .. $#fullSpace)
{
printf OUTPUT "%s", $fullSpace[$i];
foreach my $j (0 .. $#reorderedSS)
{
printf OUTPUT "\t%f", $centroids->{$reorderedSS[$j]}->{$fullSpace[$i]};
}
print OUTPUT "\n";
}
close OUTPUT;
}
であります
あなたは 'use strict;'と 'use warnings;'を使っていますか?私はPerlで約20年しかプログラミングをしていませんでした。私は彼らがしているすべての問題を見つけることはできないことを知っています。 –
インデックスを使用する代わりに、配列要素を直接使用します。例えば。 for my $ i(0 .. $#array)の代わりに 'my $ elem(@array)'のために ' – TLP
[' use strict'](http://perldoc.perl.org/strict.html)と 'なぜそれが推奨されるのか正確に分かるまで、['警告を使用する](http://perldoc.perl.org/warnings.html) –