新規記事投稿 フォロー記事投稿 記事のキャンセル
From: なおき@あいちねっと <naoki@aichinet.or.jp>
Subject: Re: perlちょっと教えてください。
Date: 1996/09/26 12:05:55
Reference: mesh.program/00074

9月25日に、Yasu.Fさんは書きました。

>9月25日に、なおき@あいちねっとさんは書きました。
>
>>perlで
>>
>>&xxx
>>$xxx
>>@xxx
>>
>>は何とか分かってきたのですが
>>
>>%xxx
>>
>>ていいうのがちょっと・・・?なんです。
>>簡単にちょっと教えていただけないですか?
>
>%なんとか というのは「連想配列」といって、簡単にいうと
>@なんとか の配列の添字が文字列に変わったものです。
>
>例えば
>
>$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'}; >
>のようなことができます(って、どういうことだろう^^;) > >これでは、値を参照するためのキー(添字)が連続していないため、 >すべての値について何かの処理をしたい場合などに不便です。そこで、 >keys という演算子をつかって、 >
>for (keys %hp) { > print "$_ さんのホームページは $hp{$_} です\n"; >} >
>というようにすることがよくあります。ここで、keys 連想配列名 は >連想配列のすべてのキーをリストとして返します。先ほどの例なら >'nir' 'naoki' 'yasuf' という3つの文字列を含むリストが返されます。 > >ただし、ここでこの3つの順番はまちまちですので(詳しくはCamel Bookを参照してください)、 >順番に並べたい場合は sort keys %hp などのようにする必要があります。 > >面白いのが、連想配列をリストとして扱った(?)場合の振舞いです。 >上の例などは、 >
>%hp = ( > 'nir', 'http://www2.meshnet.or.jp/~nir/', > 'naoki', 'http://www.aichinet.or.jp/', > 'yasuf', 'http//www2.ariake.or.jp/~yasuf/', >); >
>というように、キーと値をペアにしたリストを使って一度に代入することが >できます(うぇぶ会議室のsite.plでもやってますね^^) >また、reverse演算子を連想配列に対して使うと、キーと値の対応が逆になります。 >つまり、$hp{'http://www2.ariake.or.jp/~yasuf/'} eq 'yasuf' となってしまう >わけです(同じ値のものがあれば、どちらかがなくなります) > >というような感じでしょうか^^;; ありがとうございます。 実は日曜日9/22にいわゆるらくだ本の初めてのパール”らーにんぐぱある”ていうの 買ってやりながら読んでます。すごくわかりやすくて感動してます。 だいぶ前に買った同じ種類のぱーるぷろぐらみんぐていうの買って見てたんだけど さっぱり・・・???だったのでどうしようかと思っていたところでした。 %何とかというのにたまたま昨晩読み当たってやっと理解したところでした。 だからごめんなさいって言わなくちゃですね。 この2冊を読めばだいたい分かってくると思う。 それでもだめだったらまた、教えてください。 yasuさんの作ってくれたカウンターのログのプログラムのおかげと CRONとの併用で毎日ログを取りに会社に来る必要がなくなって とっても助かってます。ほんとにありがとうございました。 あのプログラムをしっかり理解できたいからぱーるを勉強してるんです。 (それだけじゃないけど・・・)あれがわかればだいたいのことは できるようになれると思って・・・。 それじゃこれからもよろしくお願いします。 にあさんにも << ありがとうございました。