2016年03月11日 12:48
@AoH = (
{
key00 => "val00",
key01 => "val01",
},
{
key10 => "val10",
key11 => "val11",
key12 => "val12",
},
{
key20 => "val20",
key21 => "val21",
}
);
# reading from file
# format: LEAD=fred FRIEND=barney
while( <> ){
my $rec = {};
foreach my $field ( split ){
my ($key, $value) = split /=/, $field;
$rec->{$key} = $value;
}
push @AoH, $rec;
}
# reading from file
# format:LEAD=fred FRIEND=barney
# no temp
while( <> ){
push @AoH, { split /[\s+=]/ };
}
# calling a function that returns a key/value pair list, like
# "lead", "fred", "daughter", "pebbles"
while( my %fields = getnextpairset() ){
push @AoH, { %field };
}
my $counter = 0;
my @pairset = ([qw/LEAD bellri FRIEND noredo/],
[qw/LEAD luin FRIEND manny/],
[qw/LEAD klim FRIEND mick/],
);
sub getnextpairset {
if($counter > $#pairset){ return; }
return @{$pairset[$counter++]};
}
sub getnextpairset {
# パラメータ設定
my $counter = 0;
my @pairlist = ([qw/LEAD bellri FRIEND noredo/],
[qw/LEAD luin FRIEND manny/],
[qw/LEAD klim FRIEND mick/],
);
# 無名サブルーチン
sub {
if($counter > $#pairlist){ return (); }
return @{$pairlist[$counter++]};
}
}
# 無名サブルーチン ( コードレフ ) を取得
my $getpair = getnextpairset();
# 「 $getpair->() 」でデリファレンスしてコードレフを利用
my @AoH;
while( my %fields = $getpair->()){
push @AoH, { %fields };
}