変数と演算

変数と演算

変数について

変数とは、一時的に値を保存しておくための値のことです。変数を使用すれば「計算結果を一時的に変数の中に保存しておき、後で表示する」といった事ができるようになります。

例えば

$sample = 10;

と記述すると、sample という名前の変数の中に 10 という値が保存(代入)されます。ここでの =「等しい」ではなく「代入する」という意味です。

変数には数字だけでなく、文字列を保存することもできます。例えば

$sample = "変数のテスト";

と記述すると、sample という名前の変数の中に 変数のテスト という値が保存(代入)されます。保存する値が文字列の場合、print 命令の時と同様 " で囲んで指定します。

変数の名前

Perlでは変数の名前は $ で始まる半角英数字で指定します。細かく書くと、以下のルールがあります。

例を挙げると、$name$address_2 は正しい変数ですが、$値$123 は間違った変数の指定です。

変数を使用したプログラム

以下に、変数を使用したプログラムを記載します。

#!/usr/local/bin/perl

$sample = 10;

print "Content-Type: text/html; charset=Shift_JIS\n\n";
print "<html>\n";
print "<head><title>サンプル</title></head>\n";
print "<body>\n";
print "<p>変数sampleの内容は$sampleです。</p>\n";
print "</body>\n";
print "</html>\n";

exit;

これを実行すると、ブラウザに 変数sampleの内容は10です。 と表示されます。$sample = 10; で変数 sample10 を代入し、print "<p>変数sampleの内容は$sampleです。</p>\n"; でその内容を表示させています。このように、print 文の " 内に変数名を書くと、その内容が表示されます。また、

#!/usr/local/bin/perl

$sample = "変数のテスト";

print "Content-Type: text/html; charset=Shift_JIS\n\n";
print "<html>\n";
print "<head><title>サンプル</title></head>\n";
print "<body>\n";
print "<p>変数sampleの内容は$sampleです。</p>\n";
print "</body>\n";
print "</html>\n";

exit;

これを実行すると、ブラウザに 変数sampleの内容は変数のテストです。 と表示されます。$sample = "変数のテスト"; で変数 sample変数のテスト を代入し、print "<p>変数sampleの内容は$sampleです。</p>\n"; でその内容を表示させています。

なお、変数名の直後に英数を書く場合、上の方法ではどこまでが変数名なのか認識できなくなります。具体的には、変数 sample の前後に test と表示させようとして以下のように記述すると、変数 sample が認識されません。(変数 sampletest として認識されてしまいます。)

print "<p>test$sampletest</p>\n";

この場合、以下のように修正すると変数が認識されます。変数の名前を {} で囲う事により、変数名の範囲を明確にする事ができます。

print "<p>test${sample}test</p>\n";

演算について

変数には、計算結果を代入することもできます。また、変数同士の計算を行うこともできます。ちなみに、演算とは計算のことです。例えば

#!/usr/local/bin/perl

$sample = 3 + 2;

print "Content-Type: text/html; charset=Shift_JIS\n\n";
print "<html>\n";
print "<head><title>サンプル</title></head>\n";
print "<body>\n";
print "<p>変数sampleの内容は$sampleです。</p>\n";
print "</body>\n";
print "</html>\n";

exit;

これを実行すると、ブラウザに 変数sampleの内容は5です。 と表示されます。$sample には 3 + 2 の計算結果が代入されます。

数値の演算

計算は加算だけでなく、普通に四則計算ができます。以下に例を挙げます。

#!/usr/local/bin/perl

$answer_1 = 3 + 2;
$answer_2 = 5 - 3;
$answer_3 = 2 * 3;
$answer_4 = 6 / 2;
$answer_5 = 5 % 2;

print "Content-Type: text/html; charset=Shift_JIS\n\n";
print "<html>\n";
print "<head><title>サンプル</title></head>\n";
print "<body>\n";
print "<p>\n";
print "3 + 2 ... $answer_1<br>\n";
print "5 - 3 ... $answer_2<br>\n";
print "2 * 3 ... $answer_3<br>\n";
print "6 / 2 ... $answer_4<br>\n";
print "5 % 2 ... $answer_5\n";
print "</p>\n";
print "</body>\n";
print "</html>\n";

exit;

これを実行すると、ブラウザに以下のように表示されます。

3 + 2 ... 5
5 - 3 ... 2
2 * 3 ... 6
6 / 2 ... 3
5 % 2 ... 1

+- は、それぞれ加算・減算を行う演算子です。これは数学と同じです。
* は掛け算を表します。また、/ は割り算を表します。
% は余りを求めます。上の場合、5 ÷ 2 の計算結果の余りが $answer_5 に代入されます。

これらの +* のことを演算子と呼びます。演算子にはもっと沢山の種類がありますが、ひとまずはこれだけ知っていればいいでしょう。

文字列の演算

演算は数値だけでなく、文字列に対しても行うことができます。

#!/usr/local/bin/perl

$sample = "テスト" . "サンプル";

print "Content-Type: text/html; charset=Shift_JIS\n\n";
print "<html>\n";
print "<head><title>サンプル</title></head>\n";
print "<body>\n";
print "<p>変数sampleの内容は$sampleです。</p>\n";
print "</body>\n";
print "</html>\n";

exit;

これを実行すると、ブラウザに 変数answerの内容はテストサンプルです。 と表示されます。. は文字列を連結する演算子です。ですからこの場合、テストサンプル を連結したものが $sample に代入されます。

変数同士の演算

演算は変数同士で行うこともできます。例えば

#!/usr/local/bin/perl

$number_1 = 3;
$number_2 = 2;

$answer = $number_1 + $number_2;

print "Content-Type: text/html; charset=Shift_JIS\n\n";
print "<html>\n";
print "<head><title>サンプル</title></head>\n";
print "<body>\n";
print "<p>変数answerの内容は$answerです。</p>\n";
print "</body>\n";
print "</html>\n";

exit;

これを実行すると、ブラウザに 変数answerの内容は5です。 と表示されます。$number_1$number_2 にはそれぞれ 32 が代入されるので、その計算結果が $answer に代入されます。

インクリメント演算子、デクリメント演算子

$sample1 を加える場合、以下のように記述します。

$sample = $sample + 1;

これで問題は無いのですが、プログラムでは『1加える』という処理はよく利用されるため、省略して以下のように記述することができるようになっています。

$sample++;

これでも「$sample1 を加える」という意味になります。++ はインクリメント演算子と呼ばれ、変数に1加えることができます。また、同様に

$sample--;

このようにすれば「$sample から 1 を引く」という意味になります。-- はデクリメント演算子と呼ばれ、変数から1減らすことができます。

インクリメント演算子とデクリメント演算子を使用すれば、プログラムをすっきりと書くことができます。…が、初めのうちは読みにくく感じるかもしれないので、慣れるまで $sample = $sample + 1; と書いておいても問題ありません。他の人が書いたプログラムを読んでいるうちに、徐々に慣れていくでしょう。