2013年10月19日土曜日

perl で連想配列に配列を記録する方法

いつも忘れるのでメモ。

%x2y = ();
# 読み込み
while(<>)
{
    $_ =~ s/[\r\n]//g;   # 改行除去
    @c = split / /;   # スペースで分割
    push(@{$x2y{$c[0]}}, $c[1]); # キーが$c[0]の配列に$c[1]を追加
}
# 表示
while(($k,$v)=each(%x2y))
{
    print $k." --> ".join(", ",@$v)."\n";
}

このスクリプトに標準入力から

a a
b b
b c
c d
c e
c f

を入力すると、

c --> d, e, f
a --> a
b --> b, c

が得られる。

Brzozowski さんの読み方

http://d.hatena.ne.jp/m-hiyama/20131017/1381998987
によると、「ゾゾウスキイ」とのこと。

しかしよくよく音声を
http://ja.forvo.com/word/brzozowski/
で聞いてみると最初のzが発音されず、

ブロゾウスキー
プロゾウスキー
ブロゾフスキー
プロゾフスキー

のどれかに近いように聞こえる。

「ゾ」にアクセントをおいて発音すると
forvoにある音声と似たような発音ができそうだ。