SAK 図書館
CGI-Perl 基礎編 (その二) 制御構造(判定、ループ) if、for、foreach、while
■条件式 == 等しい != 等しくない < より小さい > より大きい <= 以下 >= 以上 <=> 0 等しい, -1 右大, +1 左大 eq 文字列比較 - 等しい ne 文字列比較 - 等しくない lt 文字列比較 - より小さい gt 文字列比較 - より大きい le 文字列比較 - 以下 ge 文字列比較 - 以上 cmp 文字列比較 - 0 等しい, -1 右大, +1 左大 && and と同じ || or と同じ ! not と同じ and かつ (論理積) or または (論理和) xor 排他論理和(エクスクルーシブオア) not 否定 ■if () 文 判断 if (条件) { 条件が真のとき } else { 条件が偽りのとき } 数値 1, 2 などは、C と同じく TRUE(真) 扱いである。 0 は FALSE(偽り)。(TRUE、FALSE は、予約語にないみたい。) if ($a == 1) { $b = 2; } if ($a == 1) { $b = 2; } if ($a) { #// $a が 2 でも真になるので注意 $b = 2; } if ($a == 1 && $b == 2) { $c = 1; } if (index($a, 'key') != -1) { $c = 1; } if (($i = index($a, 'key')) != -1) { $c = substr($a, $i, length('key')) } 最後の代入結果を評価の対象にする構文は C ではよく見かける。 これができるのって、C と Perl だけかな? ■case () 多重判定 なんだか、ややこしい構文組み合わせでないと実装できないみたい。 不便だけど、スクリプト程度なら if() でなんとかなる。 ■for () ループ for (初期値; 条件; 増分) { last; #// ループ脱出 next; #// 次のループへ } for ($i = 1; $i <= 10; $i++) { $a[$i] = 2; } for ($i = 1, $j = 1; $i <= 10 and $j == 5; $i++, $j++) { $a[$i] = ++$j; } foe (;;) { #// 無限ループ } ■foreach () ループ foreach (配列変数) { $_ #// 配列要素 last; #// ループ脱出 next; #// 次のループへ } foreach (@a) { $_ = 1; } これって、Perl 5.003 以降と書いてある。(^^; げっ、いっぱい使ってしまったある。(^^; でも、おかしいな〜。確かに Perl 4 の英語版をインストしたはずなのに... 正常に動作してるぞ。(^^; ■while () ループ while (条件) { 条件が真のときループ last; #// ループ脱出 next; #// 次のループへ } ■until () ループ until (条件) { 条件が偽りのときループ last; #// ループ脱出 next; #// 次のループへ } ■do () ループ do { 条件が偽りのときループ last; #// ループ脱出 next; #// 次のループへ } until (条件); ループが一度は必ず実行される。 ■exit 脱出 exit; #// Perl 脱出 return; #// 関数脱出 ■CGI-Perl 基礎編資料
■CGI-Perl 基礎実地編資料
■CGI-Perl 応用実地編資料
■PHP 基礎編資料
■PHP + MySQL 編資料