複数のハッシュリファレンスを要素に持つ2つの配列を, それぞれ要素ごとにマージしたい時には, pairewiseが便利.
幾つかの要素を持つハッシュリファレンスを複数個要素に持つ配列リファレンス(ここでは $fuga1, $fuga2)を,
順番を崩さず各ハッシュリファレンス同士をマージしたい時,
for文を使うとちょっと冗長になってしまいました.
my $fuga_number = scalar(@$fuga1);
my $hoge_hashref = +{};
my @hoge_array = ();for (my $i = 0; $i < ($hoge_numbers + 1); $i++) {
$others = merge($fuga1->[$i], $fuga2->[$i]);
push (@hoge_array, $hoge_hashref);
}
そんなときに, 「List::MoreUtils の pairwise を使うと便利だよ」と, スマートなプログラマが教えてくれました.
使い方は以下.
use List::MoreUtils qw(pairwise);
my @others = pairwise {merge($a, $b)} @$others_user, @$others_player;
これだけ.
スマートだし可読性抜群ですね.
ちなみに, List::MoreUtils には any というこれまた便利なものがあるそうで,
こちらもチェックですね.
any BLOCK LIST
Returns a true value if any item in LIST meets the criterion given through BLOCK. Sets $_ for each item in LIST in turn:print "At least one value undefined"
if any { ! defined($_) } @list;Returns false otherwise, or if LIST is empty.