スカラ変数(2) 数値計算してみる

数値同士で加減乗除するにはそれぞれ演算子「+」「-」「*」「/」を使うみたいです。数値同士の計算はもちろん、スカラ変数でも計算できます。
そこで以下を書いてみました。

# calctest.pl
my $a = 10;
my $b = 5;
print "$a = ", $a, " $b = ", $b, "\n";
print "加算: ", $a + $b, "\n"; # -> 15 (加算)
print "減算: ", $a - $b, "\n"; # -> 5  (減算)
print "乗算: ", $a * $b, "\n"; # -> 50 (乗算)
print "除算: ", $a / $b, "\n"; # -> 2  (除算) 

ちょっと複雑で心配なので「-cw」オプションで構文チェックしてみましたが、「syntax OK」。ほっ。
実行してみると……

D:\dev\perl>perl calctest.pl
10 = 10 5 = 5
加算: 15
減算: 5
乗算: 50
除算: 2

あれ? 計算結果はちゃんと表示されましたが、最初の行が変ですね。

$a = 10 $b = 5

と出るように書いたつもりだったのですが、変数の中身が書かれてしまいました。なるほど。ここで、さっき覚えた変数が展開されないシングルクォテーションを使ってみます。

# calctest.pl
my $a = 10;
my $b = 5;
print '$a = ', $a, ' $b = ', $b, "\n";
print "加算: ", $a + $b, "\n"; # -> 15 (加算)
print "減算: ", $a - $b, "\n"; # -> 5  (減算)
print "乗算: ", $a * $b, "\n"; # -> 50 (乗算)
print "除算: ", $a / $b, "\n"; # -> 2  (除算) 

実行してみます。

D:\dev\perl>perl calctest.pl
$a = 10 $b = 5
加算: 15
減算: 5
乗算: 50
除算: 2

今度はちゃんと出ました! 「変数が展開されない」というのはこういう意味なんですね。