フリー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;
と書いておいても問題ありません。他の人が書いたプログラムを読んでいるうちに、徐々に慣れていくでしょう。