第3章「条件判断」

第3章「条件判断」。これもサラッと。

ifの基本

  • 中カッコを省略できない
  • 他の多くの言語と同じく、if文、if-else文、if-elsif-else文が使える。else ifとかelseifじゃないので注意。
  • 論理和演算にor演算子または||演算子が使える(働きは同じだけど、優先順が違う)
  • 論理積演算にand演算子または&&演算子が使える(同上)
  • 否定にはnot演算子または!演算子が使える(同上)
  • 指定された条件を満たさない場合に実行するための文unlessというのがある
  • 等価性を調べる演算子には==とeqがある。前者は数値として、後者は文字列として等しいかどうかを確かめる。

if修飾子に関して

以下の2通りのコードは同じ動きをする。

if ($foo)
{
  print $bar;
}
print $bar if ($foo);

後者はif修飾子という。if文は中カッコを省略できなかったけど、if修飾子は中カッコを書かない(書けない?)。あとセミコロンが必要。使い分けに関しては

if文の方では、「まず条件式を調べましょう。これが真のときだけprintが実行されます」という主張が読み取れます。一方、if修飾子の方では、「printが実行されます。とこれでこれが実行されるのは…のときです」というように、あくまでも条件式は補足事項のように表現されています。ですから、「条件式」よりも「実行される処理」に重点を置いて表現したいときに、if修飾子を使うとよいでしょう。

(「新版 Perl言語プログラミングレッスン 入門編」 57ページより抜粋)
ということらしい。同様にunless修飾子、while修飾子、until修飾子、foreach修飾子というのもあるらしい。

比較演算子に関して

大小関係や等価性を調べる以下の演算は、数値として比較するか、文字列として比較するかで演算子が違う(下表は62ページより抜粋)。

数値 文字列 意味
$x == $y $x eq $y 等しい(equal)
$x != $y $x ne $y 等しくない(not equal)
$x < $y $x lt $y $xは$yより小さい(less than)
$x > $y $x gt $y $xは$yより大きい(greater than)
$x <= $y $x le $y $xは$y以下(less than or equal to)
$x >= $y $x ge $y $xは$y以上(greater than or equal to)
$x <=> $y $x cmp $y $xと$yが等しいならば0、$xが$yより小さいなら-1、$xが$yより大きいなら1(compare)

最後の演算子は初めてみたな。C#ではIComparableのCompareToメソッドやIComparerのCompareメソッドに相当するやつだな。

その他

その他大切そうなこと。この章でフォーカスされている話題ではないので、後々解説されるかもしれないもの。

  • 標準入力を受け取るには $line = ; とする
  • 変数に格納されている文字列の末尾の改行文字を削除するにはchomp関数を使える