if ( 条 件 ){ 処 理 }

まずは、構文の中で一番簡単であり、そして一番使われる関数と言えば「if」=「もし〜なら・・・・・」です。



記述方法は、「if」の後の「( )」の中に条件を記述し、「{ }」の中にその条件に当てはまった場合に行う処理内容を記述します。例えば、メールアドレスが記述されているか否かを「条件」で処理すると、下記のような内容となります。

■上記の表を構文で表現すると、下記のようになります。
$mailadd = "aa@bb.co.jp"; #変数に比較したいアドレスが入る
if ($mailadd eq "aa@bb.co.jp") #ここで比較される
{
print "メールアドレスが記述されています\n"; #出力文
}
if もし〜なら・・・
( ) この中に比較するもの2つを記述する
$mailadd 比較されるスカラー変数(中身:aa@bb.co.jp)
eq 左右を比較する演算子(意味:等しい)
{ } 条件に合致した場合のみ「{ }」内が実行される

この構文で使用されている「eq」は「等しい、あるいは同じ」という意味になります。ということは、「もし、スカラー変数($mailadd)の値がaa@bb.co.jpと等しければ実行する!」という意味になります。でも「等しくない場合は何も実行されない!」で次の処理へ飛びます。では「等しい時はこの処理〜」「等しくない時はあの処理〜」というように、どちらに転んでも処理をさせるには「else{条件があてはまらなかった場合の処理}」をif文と一緒に使用します。

■if ( 条 件 ){ 処 理 }else { 条件に当てはまらなかった場合の処理 }

先程の「if文」は「等しい時のみ実行する!」というものでした。これから勉強する「else」は、「if文」に「等しくなくても実行する!」という処理を追加するものです。記述方法は「if文」の後ろに加えるだけです。






■上記の表を構文で表現すると、下記のようになります。
$mailadd = "aa@bb.co.jp"; #変数に比較したいアドレスが入る
if ($mailadd eq "aa@bb.co.jp") #ここで比較される
{
print "メールアドレスが記述されています\n"; #等しければ出力
}
else #等しくない場合
{
print "メールアドレスが記述されていません\n"; #ここを出力
}
if もし〜なら・・・
( ) この中に比較するもの2つを記述する
$mailadd 比較されるスカラー変数(中身:aa@bb.co.jp)
eq 左右を比較する演算子(意味:等しい)
{ } 条件に合致した場合のみ「{ }」内が実行される
else 比較結果が合致しない場合の処理を担当

これで条件が等しい場合と等しくない場合の処理が完成しました。しかし、1つのものをたくさんのものと比較したい場合は、「elsif」を使用します。

■if ( 条件その1 ){ 処 理 } elsif (条件その2) {処理} else { 条件に当てはまらなかった場合の処理 }

「if」と「else」を使ったパターンでは、条件に当てはまった場合と当てはまらない場合の2パターンしか処理を指定できませんでした。しかし、「elsif」を使えば、指定した条件に当てはまるかどうかを複数項目より判断し、「ここのelsif(条件)は当てはまらない・・・次のelsifも・・・次のelsifも・・・ここのelsif(条件)は当てはまった!」という複数比較が可能となります。このように「elsif」はいくつも追加する事ができます。



■上記の表を構文で表現すると、下記のようになります。
それでは問題です!
ゴハンを食べる時、右手に持つものを下記3項目からお選び下さい。
(左利きの人は左に持つものを選択)
■茶碗?  ■はし?  ■ツマヨウジ?
$data = " "; #上記の答えをここに記入する
if ($data eq "はし") #ここで比較される
{
print "正解です\n"; #正解であれば出力
} elsif ($data eq "茶碗")  #茶碗を選択した場合
{
print "違いま〜す\n"; #ここを出力
} elsif ($data eq "ツマヨウジ")  #ツマヨウジを選択した場合
{
print "違いますね〜\n"; #ここを出力
}
exit;
if もし〜なら・・・
( ) この中に比較するもの2つを記述する
$mailadd 比較されるスカラー変数(中身:aa@bb.co.jp)
eq 左右を比較する演算子(意味:等しい)
{ } 条件に合致した場合のみ「{ }」内が実行される
elsif 比較結果が合致しない場合の処理を担当(複数記述可)

このように、複数選択する場合は「elsif」を使います。ちなみにこの構文では「else」が使用されていません。理由は「if」「elsif」で指定した条件に必ず当てはまるからです。ですから、「どの条件にも当てはまらない場合」=「else」は必要ありません。

■unless ( 条件その1 ){ 処 理 } elsif ( 条件その2 ){ 処 理 } else { 条件が当てはまらなかった場合の処理 }

「unless」とは、「if」とは逆で「等しくない時実行!」という意味になります。



記述例 意 味
if($data eq "はし") もし、$dataの値が”はし”と等しければ〜
unless($data ne "はし") $dataの値が”はし”と等しくなくなければ〜
※結果上の2つは同じ意味となります。 ( ne=等しくない )

記述方法は、「unless」の後の「( )」の中に条件を記述し、「{ }」の中にその条件に当てはまらなかった場合に行う処理内容を記述します。例えば、メールアドレスが記述されているか否かを「条件」で処理すると、下記のような内容となります。


■上記の表を構文で表現すると、下記のようになります。
$mailadd = "aa@bb.co.jp"; #変数に比較したいアドレスが入る
unless ($mailadd ne "aa@bb.co.jp") #ここで比較される
{
print "メールアドレスが記述されています\n"; #出力文
}
unless もし〜じゃなければ・・・
( ) この中に比較するもの2つを記述する
$mailadd 比較されるスカラー変数(中身:aa@bb.co.jp)
ne 左右を比較する演算子(意味:等しくない)
{ } 条件に合致した場合のみ「{ }」内が実行される

「unless」は少々ややこしいですが、「同じではない!」ではない、と2回否定しています。また、「unless」は「if」と同様に「else」「elsif」と一緒に使用することができます。ちなみに使用方法は「if」の時とまったく同様です。
では「条件」の構文はここで終わります。次は「ループ」構文を勉強しましょう!