[トップページ] [戻る]
データ型とオブジェクト

スカラー変数
Perlの変数は、$(ダラー)で始まります。またJavaScriptと同じように、明確な型宣言がありません。代入された値によって、数値にも文字列にもなります。
	$buffer1 = 100;			#数値。このまま計算に使用できます
	$buffer2 = "文字";			#文字列

	$buffer1 = $buffer1 + 2500;		# 100 + 2500 で2600となります
	$buffer2 .= "だよぅ";		#"文字" + "だよぅ" = "文字だよぅ"

つぎに、print 文から出力する HTML 文書で、変数を使用してみます。
	$image_url = "http://xxxxxx/~user/images/img1.gif";
	print "<IMG SRC=\"$image_url\">\n";
を実行したとき、出力される結果は
	<IMG SRC="http://xxxxxx/~user/images/img1.gif">
となります。ところで、上記のスクリプトで、「\"」記述があります。文字列内で「"」などの特殊記号を使用する場合、頭に「\」記号 を付けなければなりません(メタ文字)。

では、上記の例を使用して・・・
	$image_url = "http://xxxxxx/~user/images/";
	print "<IMG SRC=\"$image_urlimg1.gif\">\n";
変数名と文字列がつながり、変数名が判断できなくなってしまいます。こういった場合、
	$image_url = "http://xxxxxx/~user/images/";
	print "<IMG SRC=\"${image_url}img1.gif\">\n";
変数名を{ }で囲むことで、問題を回避することができます。
配列
Perlの配列は、@(アットマーク)で始まります
	@list = (1, 2, 3, 4, 5);		# 配列の初期値を設定
	$list[0];				# リスト変数、@listの1番目を参照(「1」)
配列を参照するとき、$XXXXX[添え字]とします。@XXXXX[添え字]ではありません。また添え字は「0」から開始されます。上記の例では、配列 @list には 1,2,3,4,5 の5つのデータが存在します。

1番目のデータを参照する場合 $list[0] で、5番目のデータを参照する場合 $list[4] となります。

Perlで配列の大きさを取得する場合、
	$count = @list;
とします。上記の例では $countの値は5となります。

また、
	@list2 = @list;
とした場合、配列のコピーとなり、配列 @list の要素がすべて @list2 へコピーされます。
ハッシュ(連想配列)
ハッシュは配列のキーと値を1組にした配列で、配列のインデックスに文字列を使用することができます。
ハッシュは%(パーセント)で始まります。
	%list = ();		# 配列を初期化
	%list = ("key1", 0, "key2", 1, "key3", 2);	# キーと値をセット
%list
key1key2key3
012

ハッシュの値を呼び出すには、$配列名 { キー } とします。
	$key1 = $list{"key1"};	# $key1 は 0
	$key2 = $list{"key2"};	# $key2 は 1
	$key3 = $list{"key3"};	# $key3 は 2
ハッシュの操作
■ すべてのキーを取り出す
連想配列内のキーを取得するには、keys関数を使用します。
	@keys_list = keys %list; 
	# 'key1', 'key2', 'key3'が配列にセットされる(順序はランダム)
■ すべてのリストを取り出す
連想配列内の値を取得するには、values関数を使用します。
	@values_list = values %list;
	# 0, 1, 2が配列にセットされる(順序はランダム)
■ キーとリストを取り出す

ローカル指定について
Perlでは宣言した変数、配列のほとんどがグローバル(プログラム全域で共通のもの)になります。ですが、明示的に単一スコープ内({ }で囲まれた部分)だけの変数、配列を作成することができます。
sub test_sub {
	$index1;			#これはグローバル変数
	local($index2);		#localで囲むことによりローカル変数となります

	return;			# 終了した時点で $index2 は消滅
}

[トップページ] [戻る]
Copyright (C) 2000 Me All rights reserved
Mail To webmaster