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 編資料