フリーCGIスクリプト配布サイト。
変数とは、一時的に値を保存しておくための値のことです。変数を使用すれば「計算結果を一時的に変数の中に保存しておき、後で表示する」といった事ができるようになります。
例えば
$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; で変数 sample に 10 を代入し、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 にはそれぞれ 3 と 2 が代入されるので、その計算結果が $answer に代入されます。
$sample に 1 を加える場合、以下のように記述します。
$sample = $sample + 1;
これで問題は無いのですが、プログラムでは『1加える』という処理はよく利用されるため、省略して以下のように記述することができるようになっています。
$sample++;
これでも「$sample に 1 を加える」という意味になります。++ はインクリメント演算子と呼ばれ、変数に1加えることができます。また、同様に
$sample--;
このようにすれば「$sample から 1 を引く」という意味になります。-- はデクリメント演算子と呼ばれ、変数から1減らすことができます。
インクリメント演算子とデクリメント演算子を使用すれば、プログラムをすっきりと書くことができます。…が、初めのうちは読みにくく感じるかもしれないので、慣れるまで $sample = $sample + 1; と書いておいても問題ありません。他の人が書いたプログラムを読んでいるうちに、徐々に慣れていくでしょう。