質問

皆様にお伝えしたくて書き込みPerlスクリプトをいくつかの数学的操作のハッシュ.このハッシュ値を含むで示されているサンプルです。さんにおすすめしたいのコードです。ましのコード配列を値と別を使用せずにforeachループの出力に影響はありません。だいことをforeachループの配列を数値の合計値がBからの出力を追加。

Hash Sample:

$VAR1 = 'A';
$VAR2 = {
    '"x"' => [values],
    '"y"' => [values],
    and so on...
$VAR3 = 'B';
$VAR4 = {
        '"x"' => [values],
    '"y"' => [values],
    and so on...
$VARn....

コード:

#!/usr/bin/perl -w
use strict;
use List::Util qw(sum);

my @data;
my @count;
my $total;

my @array = ("A", "B", "C", "D");

foreach my $v (@array) {

        my %table = getV($v); #getV is a subroutine returing a hash. 
        for my $h (sort keys %table) {
                  for my $et (sort keys %{ $table{$h} } ) {
        for $ec ($table{$h}{$et}) {
                            push @data, $ec;
                            @count = map { sum(@{$_}) } @data;
                            $total = sum(@count);
                        }
           }
print "sum of $v is  $total\n";
}

と思い、問題となっています。で保管すべての以前の値が追加すべての値を次foreachループを実行します。

push @data, $ec;

ですから、私は二つの課題

1)どうしたいのでリフレッシュ配列の(@データ)の各foreachループ処理?

2)追加するにはどうしたらよいでした値の配列ref($ecセンター配列?でご利用する場合は、以下のコード:

for $ec ($table{$h}{$et}) {
    @count = map { sum(@{$_}) } @$ec;
    $total = sum(@count);
}

出力に与えてくれるので同じ値を@countと$います。

さくご提案します。

役に立ちましたか?

解決

私が正しくあなたを理解していれば、あなたのコードでちょうど小さな変更。 forループの先頭に空の配列(@data)を作成します。お役に立てれば。

        for my $h (sort keys %table) {
                  my @data;

他のヒント

1)を宣言するのにも、これがデータ配列の環状体または、空の配列になります。かんきち @data = @$ec, ない push @data, $ec?

2)を追加する値の配列が言う$ecという言えばいいの sum(@$ec);無地図が必要です。

なので完全に明らかにお客様のデータ構造では何をしようとしています。いうサンプル%表のように見えう結果を期待するからです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top