連想配列の参照渡し

2004年9月28日火曜日

Web programming

t f B! P L
 今日は個人的なメモ書き。
 Perlではまる。連想配列の参照渡しってたまにしか使わないし書式もいつもの変数と違うから、久しぶりに書いてみようとおもったらすっかりやり方を忘れてしまっていてうまく動かずにはまった。受け手側は%$hogeと書くのですね。オフィスのペーパーレス化で専門書を手元に置くことも御法度になってしまったのでやり方がわかるまであーでもない、こーでもないと30分以上かかった。時間の無駄。
 で、具体的なソースの書き方は下の例のようになる。いろいろ他にも書き方はあるけれど一番オーソドックスな書き方です。


@common = inter( \%foo, \%bar, \%joe );
sub inter {
    my ($k, $href, %seen); # ローカル変数
    foreach $href (@_) {
        while ( $k = each %$href ) {
            $seen{$k}++;
        }
    }
    return grep { $seen{$_} == @_ } keys %seen;
}