□Perl 講座 初級編 > 条件分岐

◆if文

if文はそのなの通り『もし?』です。疑問ではなく、もし何々だったらこれを実行しなさい。と言う風に条件を与えそれに応じた処理・計算をさせたいときに用いられる命令です。単体で扱われる場合もあれば繰り返し命令やその他の命令と組み合わせて使われる場合も多々あります。

構文
if (条件式) {
  実行文;
}
else {
  実行文;
}

実際の記述例
if ($i == 0) {
  print "条件にあってます";
}
else {
  print "条件にあってません";
}
上記を訳すと以下のようになります。

もし、変数$iが0だったら『条件にあってます』と出力しなさい。そうでなければ『条件にあってません』と出力しなさい。となります。

ここで、elseと出てきていますが、これは条件式を満たさない場合(偽)であればelse以降の{}の間実行しなさいと言う意味です。このelseは記述しなくても条件式が偽の場合に処理させることがなければ記述しなくても構いません。
複雑な条件をかけていく際に簡単に記述するためにPerlではこの他にelsifと言う命令も用意されています。elsifの説明はこの場では割愛させて頂きます。ある程度慣れたら自分で調べてみるのも良いでしょう( ´Д`)b



◆パターンマッチ

Perlと言うプログラミング言語は、非常に強力な正規表現によるパターンマッチングと置換機能を備え持っています。他のプログラミング言語よりずっと簡単に文字列を加工することが出来るのです。パターンマッチの使い方としては、if文などの条件文に用いて処理を判断させたり、または文字列を検索・置換(変換)したりと様々な操作ができます。
ここでは、正規表現についてと記述方法について簡単に説明します。ある程度慣れてきたら、自分でいろいろと文字列を操作すると面白いですよね♪でも、私は慣れるまでに結構苦しみました(^−^;;最初は本当にいまいち意味が理解できなかったのを今でも覚えています。

正規表現って?
簡単に言ってしまうと、正規表現とは文字列のパターンを記述する方法の事を言います。パターンを表現するための文法や構文といっても良いでしょう。皆さんの覚えやすい方で覚えてください( ´Д`)b
Perlではパターンマッチ演算子『/』(スラッシュ)で囲まれた文字列を正規表現であるとみなします。そのなかに様々なメタ文字(記号)を用いて、記述します。記述例とメタ文字(記号)紹介を下記に示します。
記述例
/^My name.*\.$/

記述例の意味を日本語に翻訳すると・・・

My nameで始まり『.』(ドット)で終わる文字列の事を表現しています。

最初の『^』(キャレット)は文字列の最初にマッチする記号です。
最初の『.』(ドット)は全ての文字にマッチする記号です。
*は直前の文字が0個以上あることを示します。
『.*』でどんな文字でも入っても入らなくても良いという意味になります。
2番目の『.』(ドット)は前に『\』が付いていますから、文字として扱われます。
$は行の終わりにマッチする記号です。$変数名と違いますから気をつけてくださいね(^−^;;

文字列のなかに『 ^ \ * [ $ + ? . { ( ) | 』等のメタ文字(記号)をマッチさせたいときは、その文字の前に『\』をつけると、マッチさせることが出来ますので覚えてください。

メタ文字 意味
\ 次のメタ文字を文字として認識させる
^ 最初にマッチ
. 全ての文字にマッチ(改行以外)
$ 最後にマッチ
| 選択
( ) グループ化
[ ] 文字クラス
\t タブ
\n 改行
\w 単語の構成文字にマッチ[a-zA-Z0-9]
\W 単語の構成文字以外にマッチ[^a-zA-Z0-9]
\s 空白文字にマッチ(スペース、タブ、改行文字など)[ \r\t\n\f]
\S 空白文字以外にマッチ[^ \r\t\n\f]
\d 数字にマッチ[1-9]
\D 数字以外にマッチ[^0-9]

修飾子
正規表現の後ろにくっつけてマッチする条件を制御します。
修飾子 意味
g マッチするものを全て見つける
i 大文字小文字の区別をしないパターンマッチをする
m 文字列を複数行として扱う
s 文字列を一行として扱う

置換演算子 s///
$変数名 = s/正規表現/置換したい文字列/; でパターンマッチングで正規表現にマッチした文字列を置換することが出来ます。
変換演算子 tr///
$変数名 = tr/変換対象の文字/変換する文字/; で対象の文字の変換・削除を行います。
現状までで、かなり色々なことが出来ますので、この初級編ではこれ以上の説明は割愛させて頂きます。

□初級編 プログラミングに入る前に