xmlから読み込んだパーツスクリプトを1つのサブのハッシュに分解し、ハッシュの配列を出力してから、メインから2番目のサブを呼び出して配列を処理するハッシュのPerl:サブルーチンに渡されたハッシュの配列へのアクセス
Data :: Dumperは、すべてが正しく渡されていることを示します。
なぜ私は現在ハッシュにアクセスできないのか分かりません。
use strict;
use warnings;
use Data::Dumper;
my (@sortedData, $value1, $value2);
use subs qw(processData outputData);
@sortedData = processData;
outputData($value1, $value2, \@sortedData);
sub processData{
# Example code
# # Does some processing of xml that results in a hash.
# # That series of hashes is pushed onto an array
my ($item, @results);
# foreach $item (@{ $rss->{items}){
# my %data = (
# 'first' => $item->{'value'},
# 'second' => $item->{'value'},
# 'third' => $item->{'value'}
# );
# push @results, \%data;
# }
# Essentially the hash is :
@results = (
{'data1'=>810,'data2'=>153,'data3'=>215},
{'data1'=>160,'data2'=>220,'data3'=>604},
{'data1'=>940,'data2'=>103,'data3'=>115},
{'data1'=>100,'data2'=>319,'data3',525},
{'data1'=>500,'data2'=>803,'data3'=>650}
);
return @results;
}
sub outputData{
my ($input1, $input2, @localData) = @_;
print Dumper @localData;
print "\@localData: " . @localData . "\n";
foreach my $i (@localData){
# foreach my $j ($i){
# print $i . "\n" . $j . "\n";
# }
print "\$i: " . $i . "\n";
}
}
出力:
$VAR1 = [
{
'data3' => 215,
'data2' => 153,
'data1' => 810
},
{
'data3' => 604,
'data2' => 220,
'data1' => 160
},
{
'data2' => 103,
'data3' => 115,
'data1' => 940
},
{
'data1' => 100,
'data3' => 525,
'data2' => 319
},
{
'data1' => 500,
'data3' => 650,
'data2' => 803
}
];
@localData: 1
$i: ARRAY(0x80071b30)
@localDataの値が1であるか、なぜ@localDataの要素の参照ではなく、HASHのARRAYである理由私は理解していません。
私は確かに初めてPERLアレイについて深く理解しています。 私は思ったほどそれを理解しません。
*スカラーの配列に*参照*を渡して '@ localData'に代入し、' $ localData [0] 'に参照を入れます。 – ikegami