last-modified: 2nd/June/'01;
since: 1st/June/2001;
もう少し、高度な事をやらせて見ましょう。
プログラム作成では、「条件によって動作を変えること」と、「同じ動作を繰り返すこと」が出来ると、やれる事が広がります。まずは、条件によって動作を変えるサンプルを作成します。
ユーザ名を入力し、それが登録されているかどうかで挙動を変えるスクリプトです。
id.pl
>>
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: |
#!/usr/bin/perl #上の行では、 Perl のパスを記述してください。 $login_id = "sugai"; print "Please, enter your name; "; chomp($name = <STDIN>); if ($name eq $login_id){ print "$name さん、ようそこ!\n"; } else { print "$name さんは、ユーザに一致しませんでした。\n"; } |
6 行目から 10 行目が条件分岐を表す if
節です。
実行例>>
1: 2: 3: 4: 5: 6: 7: 8: 9: | % chmod +x id.pl % ./id.pl Please, enter your name; sugai sugai さん、ようそこ! % % ./id.pl Please, enter your name; manabu manabu さんは、ユーザに一致しませんでした。 % |
1 行目目で id.pl
に実行許可属性を与えています。この操作は、 id.pl
をカレントディレクトリに置いて実行してください。
if 文では、条件によって挙動が変化します。if 文の基本的な構造は、次のようになります。
if (条件式1) { ブロック1 #条件式1が真ならば実行 } elsif (条件式2) { ブロック2 #条件式2が真ならば実行 } elsif(条件式3) { ブロック3 #条件式3が真ならば実行 } else { ブロック #全ての条件式が偽ならば実行 }
まず、 if
節中の「条件式1」が真ならば「ブロック1」を実行し、他の全てのブロックは無視します。「条件式1」が偽ならば、次の elsif
節中の「条件式2」を評価し、これが真ならば「ブロック2」を実行し、他の全てのブロックは無視します。このように elsif
節を順番に評価していって、最初に真を返した節中のブロックを実行し、他のブロックは全て無視します。
全ての条件式が偽ならば、 else
ブロックを実行します。
elsif
, else
節は省略する事ができて、その場合は、 if
条件文が偽ならば、なにも実行されず、スクリプトの後続の行に進みます。
if 文は短ければ 1 行目で書いて構いません。
print $new if ($eps >= $new);
これは、次のように書いたのと同じことです;
if ($eps >= $new) { print $new; }Copyright: SUGAI, Manabu. Since: 2001