Perl/演算子

出典: フリー教科書『ウィキブックス(Wikibooks)』

目次

[編集] 代入演算子

  1. = 代入処理に使われます。C言語とは異なり、数字でも文字でも使用することが可能です。
    1. 数字にも使える
      $a = 1; ($aに 1 が代入されます)
      
    2. 文字にも使える
      $a = "a"; ($aに a が代入されます)
      
  2. += -= *= /= %= **= 計算結果を代入します。演算の詳細は後の項を参照してください。
    $a += $b; ($aに$aと$bを足したものが代入されます)
    
  3. .= 文字列を結合して代入します。
    $a .= '(end)'; ($aの末尾に '(end)' が追加されます)
    

[編集] 算術演算子

  1. + - * / 数値の加減乗除に使われます。
    $a = 1 * 2 + 3 / 4; ($aに 2.75 が代入されます)
    
  2. % 除算の「余り」を返します。
    $a = 4 % 3; ($aに 1 が代入されます)
    
  3. ** 数値のべき乗を求めるのに使います。
    $a = $b ** 3; ($aに$bの3乗が代入されます)
    
  4. ++ --(インクリメント・デクリメント) 数値に1を足したり引いたりします。変数の前におくか後ろに置くかで意味が変化します。
    $a++; #$aの値が1増えます。
    
    $a = 5;
    $b = 3;
    
    print --$a; #$aの値が1減り、4が出力されます。
    print $b++; #画面には3が出力されますが、その後に$bの値が1増えます。
    

[編集] 文字列演算子

  1. . x 文字列の「連結」と「同語反復」に使われます。
    $a = "a" . "b" x 2; ($aに abb が代入されます)
    

[編集] クオート演算子

  1. q qq ' "
  2. qw qr qx

[編集] ビット演算子

  1. | & ~
  2. >> <<

[編集] AND, OR

  1. || or && and 主にif文などで、複数の条件を指定するときに使用します。|| と or、&& と and はそれぞれ同じ意味です。
    if ( ( $a == 5 ) || ( $b == 3 ) ) {
     #この部分は$aが3、または$bが5のときに実行されます
    }
    
    if ( ( $a == 8 ) && ( $b == 7 ) ) {
     #この部分は$aが8、かつ$bが7のときに実行されます
    }
    
  2. $flag or die; などの用法

[編集] 数値比較演算子

  1. < > <= >= 不等号を表すのに利用します。
    if ( $a > $b ) {
     #この部分は$aが$bより大きいときに実行されます
    }
    
    if ( $a <= $b ) {
     #この部分は$aが$b以下のときに実行されます
    }
    
  2. == != 同じ数値であることや、違う数値であることを表すのに使用されます。
    if ( $a == $b ) {
     #この部分は$aが$bと同じ値のときに実行されます
    }
    
    if ( $a != $b ) ) {
     #この部分は$aが$bと違う値のときに実行されます
    }
    

[編集] 文字列比較演算子

  1. eq ne 二つの文字列が同じ値かを調べるときに使用します。
    if ( $a eq $b ) {
     #この部分は$aが$bと同じ文字列のときに実行されます
    }
    
    if ( $a ne 'correct' ) ) {
     #この部分は$aに代入されている文字列が 'correct' でなかったときに実行されます
    }
    
  2. le ge lt gt
  3. <=> cmp

[編集] 条件演算子

  1. (条件) ? (真) : (偽)

[編集] 範囲演算子

  1. リストコンテキストとした場合は範囲を発生
    if(1 .. 100) {
      print $_;
    }
    

    とすると、1234567891011.........99100が出力される。

    また、文字列にも適用することができ(マジカルインクリメント)、
    if('a' .. 'z') { 
      print $_;
    }
    

    の実行結果は、abcdefg........xyzとなる。 右オペランドが不適切な場合にはその文字列長を超えない範囲の全てを範囲とする。

    if('A' .. 'vv'){
      print $_;
    }
    

    の実行結果は、ABCDEFG........ZVZWZXZYZZとなる。

    このページ「Perl/演算子」は、書きかけです。加筆・訂正など、協力いただける皆様の編集を心からお待ちしております。また、ご意見などがありましたら、お気軽にノートへどうぞ。
  2. スカラーコンテキストの場合はフリップフロップ演算子となる # ..
ヘルプ