変数

2-1. スカラー変数とは

Perlで一般的に使われる変数は1つの値が格納されたスカラー変数というものである。
スカラー変数の名前は、$ (ダラー) + 英字1文字から始まり、
それ以降は数字、英字およびアンダースコア ( _ ) を用いることができる。

例) $a $value $num など

また大文字と小文字が区別されるので、例えば $a と $A は別物として扱われる。

C言語と違い、Perlでは変数定義(int i;など)を行わなくても変数を使用することが出来る。
その分、変数名をきちんとしておかないと後でプログラムを見直した際に自分で設定した
変数の意味を忘れる可能性があるのでコメントなどを打つようにしたほうが好ましい。


2-2. 数値と文字列

スカラー変数には、数値や文字列を代入することが出来る。
(c言語と違い文字列をひとつの変数として扱うことが出来る)

例)

$x = 1; とすると、$x という変数に数値の 1 が代入される。
$x = -1; とすると、$x という変数に数値の -1 が代入される。
$x = 3.1415; とすると、$x という変数に数値の 3.1415 が代入される。(浮動小数点)
$x = 'nlp'; とすると、$x という変数に文字列の nlp が代入される。

(注意)
Perlでは文字列を扱う場合には、
必ずシングルクォート ( ' ) かまたはダブルクォート ( " ) で囲む必要がある。

スカラー変数を囲む場合、ダブルクォート内では変数展開されるが、
シングルクォート内では変数展開されない。

シングルクォートの中でシングルクォート文字を使用する場合、
または、ダブルクォートの中でダブルクォート文字を使う場合には、
エスケープ記号 ( \ ) でエスケープしなければならない。


2-3. スカラー演算子

Perlは数学言語でもあり、次のような演算子が用意されている。
演算子に関しては基本的にC言語とほぼ同じである。

  • 算術演算子
    これは数値に対して、ある種の数学関数を実行するものである。

    $x + $y加算$x と $y の和
    $x - $y減算$x から $y を引いた値
    $x * $y乗算$x と $y の積
    $x / $y剰算$x を $y で割った値
    $x % $y剰余$x を $y で割った余り
    $x ** $yべき算$x を $y乗した値



  • 文字列演算子

    これは文字列に対して、連結(加算)や繰り返し(乗算)を実行するものである。

    (文字列A) . (文字列B) 加算 文字列Aの後に文字列Bを連結する
    (文字列C) x (数値) 乗算 文字列Cを数値の回数繰り返す



    例)
    $a = "nlp";
    $b = "user";
    $c = 3;

    print $a.$b;
    print "\n";
    print $ax$c;

    <出力結果>
    nlpuser
    nlpnlpnlp

    これは数値に対しても同じである。
    数値の場合には、単に文字列と解釈して処理を行う。

    ※出力関数(print)に関していうと、c言語では"printf("〜");"という形式で
     プログラムに書くことによって変数の値が標準出力で表されていたが、
     perlにおいては"print 〜;"だけで出力される。
     (フォーマットの指定がいらない)



  • 二項代入演算子

    代入演算子に関しては、基本的にc言語と同じ構造になっています。

    元の式 二項代入演算子
    $a = $a + $b $a += $b
    $a = $a - $b $a -= $b
    $a = $a * $b $a *= $b
    $a = $a / $b $a /= $b
    $a = $a . $b $a .= $b
    $a = $a x $b $a x= $b



    オートインクリメント演算子とオートデクリメント演算子に関しても同じである。

    構文例 名前 意味
    ++$a
    $a++
    オートインクリメント $a に1を加える
    --$a
    $a--
    オートデクリメント $a から1を引く



  • 論理演算子

    論理演算子に関しても基本的にはc言語と同じである。

    構文例 名前 結果
    $a && $b
    $a and $b
    論理積 $a が偽なら$a、そうでなければ $b
    $a || $b
    $a or $b
    論理和 $a が真なら$a、そうでなければ $b
    ! $a
    not $a
    否定 $a が真でなければ真



  • 比較演算子

    比較演算子に関してはc言語とは違い、数値だけでなく文字列を
    比較するための演算子が追加されている。
    数値を比較する場合と文字列を比較する場合、演算子の記述が異なるので注意。

    意味 数値 文字列 意味
    より小さい $a < $b $a lt $b $a が $b より小さければ真
    より大きい $a > $b $a gt $b $a が $b より大きければ真
    より小さいか等しい $a <= $b $a le $b $a が $b より小さいか等しければ真
    より大きいか等しい $a >= $b $a ge $b $a が $b より大きいか等しければ真
    等しい $a == $b $a eq $b $a と $b が等しければ真
    等しくない $a != $b $a ne $b $a と $b が等しくなければ真
    比較 $a <> $b $a cmp $b $a と $b が等しければ 0
    $a が大きければ +1
    $b が小さければ -1



    2-4. 数学関数

    数値を処理する関数の一覧を載せておく。

    関数 意味
    sin サイン(正弦)を返す
    cos コサイン(余弦)を返す
    log e (自然対数) を底とする対数を返す
    sqrt 平方根を返す



    BACK TO TOP