プログラム質問箱への投稿
記事番号00074へのフォローを投稿します。
お名前(ペンネイムで結構ですが必要です)
(
ブラウザに個人情報を覚えさせない)
電子メイルアドレス(必要です)
題名(必要です)
Home Page がある方はリンク希望先の URL を記載して下さい
会議室に載せたい内容を以下へお書き下さい (
HTMLを解釈せずにそのまま表示)
9月25日に、Yasu.Fさんは書きました。 >9月25日に、なおき@あいちねっとさんは書きました。 > >>perlで >> >>&xxx >>$xxx >>@xxx >> >>は何とか分かってきたのですが >> >>%xxx >> >>ていいうのがちょっと・・・?なんです。 >>簡単にちょっと教えていただけないですか? > >%なんとか というのは「連想配列」といって、簡単にいうと >@なんとか の配列の添字が文字列に変わったものです。 > >例えば ><blockquote> >$hp{'nir'} = 'http://www2.meshnet.or.jp/~nir/'; >$hp{'naoki'} = 'http://www.aichinet.or.jp/'; >$hp{'yasuf'} = 'http://www2.ariake.or.jp/~yasuf/'; > >$naoki_hp = $hp{'naoki'}; ></blockquote> >のようなことができます(って、どういうことだろう^^;) > >これでは、値を参照するためのキー(添字)が連続していないため、 >すべての値について何かの処理をしたい場合などに不便です。そこで、 >keys という演算子をつかって、 ><blockquote> >for (keys %hp) { > print "$_ さんのホームページは $hp{$_} です\n"; >} ></blockquote> >というようにすることがよくあります。ここで、keys 連想配列名 は >連想配列のすべてのキーをリストとして返します。先ほどの例なら >'nir' 'naoki' 'yasuf' という3つの文字列を含むリストが返されます。 > >ただし、ここでこの3つの順番はまちまちですので(詳しくはCamel Bookを参照してください)、 >順番に並べたい場合は sort keys %hp などのようにする必要があります。 > >面白いのが、連想配列をリストとして扱った(?)場合の振舞いです。 >上の例などは、 ><blockquote> >%hp = ( > 'nir', 'http://www2.meshnet.or.jp/~nir/', > 'naoki', 'http://www.aichinet.or.jp/', > 'yasuf', 'http//www2.ariake.or.jp/~yasuf/', >); ></blockquote> >というように、キーと値をペアにしたリストを使って一度に代入することが >できます(うぇぶ会議室のsite.plでもやってますね^^) >また、reverse演算子を連想配列に対して使うと、キーと値の対応が逆になります。 >つまり、$hp{'http://www2.ariake.or.jp/~yasuf/'} eq 'yasuf' となってしまう >わけです(同じ値のものがあれば、どちらかがなくなります) > >というような感じでしょうか^^;;
ホームペーヂに戻る
nir@mvg.biglobe.ne.jp
Last Update: 2 December 1999