Perl if 条件分岐 スクリプトの書き方
if文は、条件に「一致したかどうか」という判断に基づいて、実行する処理を変更するときに使います。
目次
if文による条件判断
if文の書き方
if文では複数の条件を判断することができます。上から順に判定されます。追加の条件である「elsif」「else」は必要なときに記述します。また、条件の中に条件を書く「入れ子構造」を書くことができます。尚、「if修飾子」という使い方で、「条件が真の場合に左辺の式を実行」という書き方ができます。この使い方は、ちょっとした条件を簡潔に表現できて便利です。一方で、条件「偽」に着目した「unless」という書き方もあります。
if – elsif – else – end
if (条件1) { ...; } elsif (条件2) { ...; } else { ...; }
if修飾子
式(条件が真の場合に実行) if 条件;
if修飾子と否定
式(条件が否定されたので、偽の場合に実行することになる) if !条件
if文の真偽
真偽における「偽」は、「0」「空文字」「undef」です。複数の条件をまとめるには、論理演算子「&&」「||」を使います。否定は「!」です。
プログラム
test_if.pl
#! /usr/bin/perl die "exit\n" if !@ARGV; my $aaa = $ARGV[0]; if ($aaa == 1) { print "aaa==1 aaa=", $aaa, "\n"; } if ($aaa>1) { if ($aaa>2 && $aaa<3) { print "aaa>2 aaa=", $aaa, "\n"; } elsif ($aaa>3 && $aaa<=5) { print "aaa>3 aaa=", $aaa, "\n"; } else { print "aaa>5 aaa=", $aaa, "\n"; } }
スクリプト実行
$ perl test_if.pl exit
$ perl test_if.pl 1 aaa==1 aaa=1
$ pel test_if.pl 4 aaa>3 aaa=4
プログラムについて
「test_if.pl」では、ifの条件を数種類ためしてみました。引数の数が不正のとき、if修飾子を使ってdieで即座に終了しました。「変数aaa」が1のときシンプルなifの書き方を使い、1より大きいとき条件を入れ子構造にして更に条件を細かく分岐させました。入れ子内部では、if – elsif – else を使いました。
今回はわざと複数の条件を入れ子にしました。プログラムが複雑になりすぎる場合は、他の制御構造を利用したり・例えば1以下の場合には先にプログラムを完結させるような仕組みで、プログラムがシンプルになるように工夫した方が良いと思います。