***HPクリエイターのためのCGI講座 第4回***
2.データ型

演習問題がここのページにあります。
今週中を目標に完成させてください。
(解答も同じページにありますが、まずは、自分自身でチャレンジしてくださいね)

Perlでデータを扱う場合、指定されたデータ型以外は使えません。
Perlで扱える代表的なデータ型は、スカラー型、配列型、ハッシュ型の3タイプです。
各型の変数名は、型を識別するための記号で識別されます。

変数:電卓にあるメモリのようなもので、データの格納、取り出し、変更ができます。

ここでは各データ型の概要を述べます。
詳細については、次項から演習を交えて解説します。


<スカラー型変数>
一つの値(数値もしくは文字列)を格納します。
スカラー値を格納する変数名には頭に $ 記号が付きます。
スカラー変数へ値を代入するには = (代入演算子)を使います。
(演算子については、後の学習で詳しく説明します)

=例=
$moji="I am a boy.";
文字列の代入
$suji=25;
数値の代入

文字列は「"」(ダブルクォーテーション)もしくは ' (シングルクォーテーション)で、はさみます。


<配列型変数>
データのリストを格納するための変数です。
配列型変数は変数名の頭に @ 記号が付きます。

=例=
@hairetu=("red","green","blue");
配列への代入

文字列"red","green","blue"は配列の要素と呼ばれ、各要素は、インデックス番号(添え字)で取得できます
インデックス番号は[ ]ではさみます。
また、インデックス番号は0から始まります。

$color1=$hairetu[0];
$color1には文字列"red"が格納される
$color2=$hairetu[1];
$color2には文字列"green"が格納される
$color3=$hairetu[2];
$color3には文字列"blue"が格納される

この配列の状態を図式化すると、下図のようになります。

インデックス 要素の内容
0 "red"
1 "green"
2 "blue"

<ハッシュ型変数>
配列と同じですが、インデックス番号で各要素をアクセスするのではなく、番号の変わりに文字列を使います。
このインデックス用文字列をキーと呼びます。
配列型変数は変数名の頭に % 記号が付きます。

=例=
%hairetu=("one","red","two","green","three","blue");
%hairetu=(one=>"red",two=>"green",three=>"blue");
ハッシュ配列への代入

上記2行は、全く同じです。

文字列"red","green","blue"が配列の要素です。
文字列"one","two","three"はキーに使われる文字列です。
キー文字列は { } ではさみます。

$color1=$hairetu{"one"};
$color1には文字列"red"が格納される
$color2=$hairetu{"two"};
$color2には文字列"green"が格納される
$color3=$hairetu{"three"};
$color3には文字列"blue"が格納される

このハッシュ配列の状態を図式化すると、下図のようになります。

キー 要素の内容
"one" "red"
"two" "green"
"three" "blue"

<変数名のルール>
変数名は半角の英文字、数字、 _ (アンダーバー)が使用可能です。
変数名の先頭には数字を使えません。

=ダメな例=
$ab-cd - (マイナス)が使われている
$5abcd 先頭に数字が使われている


<Perlでの数値表現>
以前に、10進数、2進数、8進数、16進数のお話をしましたが、Perlでそれらの数値を表現する方法を解説します。
10進数:普通に数字を書く(例:12、100)
2進数 :Perlでは2進数表現方法はありません
8進数 :前に0をつける(例:020、012)
16進数:前に0xをつける(例:0x1a、0xa5)

$num1=25;
10進数で表せば25
$num2=025;
10進数で表せば21(8*2+5)
$num3=0x25;
10進数で表せば37(16*2+5)


********************************************************************************
講師:ALK alk@arkland.co.jp
運営:アークランド(株) http://www.arkland.co.jp