基礎の基礎、これが分かれば恐くない(3)

真里:加藤真里  シレ:シレスト=ノイデルファーム

シレ:前回ちらりと触れましたが、今回は「タンス型」の変数、ハッシュと配列について説明します。

真里:……で、さ、2つも種類があるわけ?

シレ:はい。まずここが正念場ですよ。……さて、まずはハッシュ(連想配列)についてですが……例えば書類を整理してある棚などには、その中身を書いたラベルなどを張りつけますよね。

真里:……そんな面倒なことしないって。

シレ:……それは真里さんだけでしょう(汗)……ともかく、一言で言ってしまえばハッシュとはそんなものです。なお、ハッシュ全体を表す時には%shillestというふうに、そしてそのハッシュの中の特定の「棚」を表す時は、例えばponaという名前の「棚」があったとすると$shilllest{'pona'}(もしくは$shillest{"pona"})というふうに書きます。

……と、こんな感じですね。もちろん1つ1つの棚は独立した「ふつうの変数」ですから、それぞれに何でもデータが入ってしまいます。

真里:……で。これって何に使うの?

シレ:……また難しい質問を(汗)……えー、これはですね、たとえば……ユーザーとパスワードの対照表というのはどうでしょう?
$pass{'shillest'} = 'abc123';
$pass{'ponapalt'} = 'def456';
……というふうにしておくわけです。

真里:……じゃ、次。配列って何なの?

シレ:……せっかちですね……まあいいでしょう。それでは配列の説明に移ります。ハッシュは「ラベルのついた棚」だったんですが、配列は「順番待ちの整理番号」といったところでしょう。

真里:整理番号?ということはもしかして$shillest{2}とか書くの?

シレ:惜しいです。理屈としてはあってますが……配列は「順番を問題にする」場合に使う、1つ1つの入れ物に番号札のついた変数です。例によって配列全体を表す時は@shillest、そしてその中の例えば10番目のものを取り出す場合は$shillest[9]と書きます。ここで注意してほしいことですが、配列は整理番号だと言いましたが、この番号、1からではなく0から始まるということです。最初の要素は$shillest[0]だというわけです。

これも1つ1つには何でもデータが入って、しかもそれは全部独立しています。

真里:……じゃあ、その中にデータ入れる時は
$shillest[0] = 'abc';
$shillest[1] = 'def';
……って1つずつわざわざ書かないといけないわけ??

シレ:……それは面倒ですよね。そこで……
@shillest = ('abc','def','ghi','jkl');
と、コンマで区切って括弧で囲むと、例えばこの場合は番号札0〜3のところにちゃんと順番にabc,def,ghi....とデータが入ってくれます。つまりこの場合はコンマ区切りのものは配列とみなされる、ということです。
ちなみにこの書き方(リスト、といいます)、逆も可能で、
($text0,$text1,$text2,$text3) = @shillest;
と書くと(例えば)番号札0〜3のものがやはり順番に$text0,$text1...の中に入っていきます。さらにもっと技をお見せしますと、
@shillest = (@ponapalt,$mari,'murao');
とすると、@ponapaltの中身全部が順番通りに、続いて$mariの中身、さらに'murao'という文字が、この順番を保ったまま@shillestの中に0番から入ってしまいます。

[次回に続く……]

 

←PREV | NEXT→

Return : Perl Top