どんなリフレッシュ配列にはforeachループ?
-
21-09-2019 - |
質問
皆様にお伝えしたくて書き込み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)
;無地図が必要です。
なので完全に明らかにお客様のデータ構造では何をしようとしています。いうサンプル%表のように見えう結果を期待するからです。
所属していません StackOverflow