算術式

データに対していろいろな演算を行うことができます。演算子とデータ、変数などから算術式をつくります。

スカラー値の算術式(代表的なもののみ)

「.」(ドット)で2つの文字列データをつなぎます。

"Masayuki "."Shio"

計算の優先順位は通常の計算と同様です。優先順位は下記の順番に高くなっています。

** >> */% >> +- >> .

必要に応じて括弧を用いた計算ができます。  ($x+2)*3

 数値データと文字列データの相互解釈

基本的には、四則演算は数値データに、連結は文字列データに適用されるべきものですが、Perlでは数値データに対して連結をしたり、文字列データに四則演算を適用したりすることが可能です。これはPerl言語独特の仕様です。

数値データに連結などの文字列データに対する演算を適用した場合には、数値データはその数値をそのまま文字列データに直したものとして解釈されます。

文字列データに対して数式の四則演算などの数値データに対する算術を適用すると、文字列データが数値として解釈されます。半角数字から始まる文字列は数値として解釈できるところまでをその数値として、数値以外で始まる文字列は「0」の値として計算が行われます。

算術式の結果

変数の値を参照するのと同様に、算術式の結果を代入したり参照したりすることができます。

$x = 123; $y = 45; print $x . $y;  # 12345と表示される
print "12345"*1,"\n"; # 12345と表示される
print "Masayuki"*1,"\n"; # 0と表示される
$x = $x + 1;  # 変数$xの値に1を加えたものを$xに代入($xの値が1増える)
$name = $first_name . " " . $last_name;  # 2つの変数の値を空白文字をはさんで連結して代入

練習問題

  1. 次のプログラムで、画面に出力される変数$xの値は何か答えよ。

    $x = 1;
    
    $x = $x + 5;
    
    $x = $x * 2;
    
    print "x = $x\n";
  2. 次のプログラムは商品の値段から消費税を求めるプログラムですが、処理が一つ足りません。足りない処理を答えよ。

    $price =  500;
    
    $tax = $price * $rate / 100;
    
    print "価格$price円の品物の消費税は$tax円です。\n";

練習問題の答