Perlの条件分岐には、条件に応じて(条件が真の場合に)処理を分岐するif...elsif...else文とif文とは逆(if文で!を付加して条件を否定する場合と同様)に条件にマッチしない場合のみ(条件が偽の場合に)処理を行うunless文があり、何れもCのように後置式とすることも可能です。
if文で括られた処理は、条件が真の場合に実行されます。
$condition1="gogo";
$condition2="run away";
if ( $condition1 ) {
print "Hello World!\n";
}
elsif ( $condition2 ) {
print "Good Bye!!\n";
} else {
print "...\n";
}
条件がいくつかある場合には、複数の条件の内、if文とは異なる他の条件に一致する場合の処理を記述するelsif文、他のどの条件にも一致しない場合の処理を記述するelse文を使うことが可能でelsif文は必要に応じて同時に複数回使うことも可能です。
elsif文は、若干注視しておく必要があり、Pythonやシェルの内、bashやkshではelif、csh/tcshではC/C++同様にelse if、RubyはPerl同様elsifといった具合にスクリプトや言語によって微妙に異なるケースがあります。
if...else文(elsifが入っても可)は、次のように一行で記述することもでき、ワンライナーなら必然的にこのような書き方になります。
if ( $condition ) { print "Hello World!\n"; } else { print "Bye\n" }
また、if文のみ、つまりelsif/else文のないif文の場合で且つ処理が1つの場合にはCのようにif文などの条件を後置することもできます。
Perlでは通常、if文(、unlessとwhile文)は式を括る波カッコ{ }を省略することができませんが後置式の場合には省略することが可能です。
print "Hello World!\n" if ( $condition ) ;
また、条件式を括る丸かっこ( )も省略できるので下記のように記述することもできます。
print "Hello World!\n" if $condition ;