プログラミングとは, 誤解を恐れずに言えば「入力されたデータに, 何かしらの処理を行って, その結果を出力する」ための手続きを記述するものです. その中で, 入力されたデータや, 一時的に必要になったデータを格納する場所(もの), それが「変数」です.
Perlにおける「変数」には, 「スカラー変数」, 「配列」, 「連想配列(ハッシュ)」という, 異なる性質を持った3種類つの型が存在します. ざっくり言えば, 「スカラー変数」は1つのデータしか格納できませんが, 「配列」と「連想配列」は複数のデータを格納することができます.
ここでは, まず1つのデータを格納できる, 「スカラー変数」について学んでいきましょう.
use strict;
use warnings;
my $foo; # (1)
$foo = 1; # (2)
my $bar = 3.14; # (3)
$bar = "buz"; # (4)
(1)
で, foo
という名前のスカラー変数を定義しています. なお, スカラー変数の先頭には, $foo
のように先頭に$
を付けなければいけません(この$
については, 「スカラー(Scalar)のS($
)」, と覚えると良いでしょう).
変数は, 名前を付けることで他の変数と区別することができますが, ある名前の変数を初めて利用する時は変数名の前にmy
を付けて, その名前の変数を利用することを宣言しなければなりません.
(2)
では, (1)
で宣言した変数に, 1
という数値を入力しています. =
という代入演算子を使うことで, =
の左側(左辺)にある変数に, =
の右側(右辺)の変数を入れる(格納する)ことができます. この操作を「代入」と呼び, 「$foo
に1
を代入する」などのように呼びます.
なお, 変数$foo
については, (1)
の段階でmy
を使って宣言済みなので, (2)
のときに改めてmy
を付けて宣言する必要はありません.
(3)
のように, 変数の宣言と代入を同時に行うこともできます. ここでは, スカラー変数$bar
を宣言し, そこに3.14
という数値を代入しています.
C言語やJavaを経験した人からすれば少し不思議かもしれませんが, Perlの変数にはどのような種類のデータでも代入することができます. そのため, (4)
のように, 3.14
という数値が代入されている変数$bar
に対して, buz
という文字列を改めて代入することもできます.
ところで, 先程のサンプルコードに出てきたfoo
, bar
, baz
などは, 意味のない「仮の名前(メタ構文変数)」です.
このように, コードを書く時に変数や関数に名前を付ける時, サンプルコードである等の理由で, 適当な名前を付けたい時に, foo
, bar
, baz
がよく使われます.
日本においては, hoge
, piyo
, fuga
などが使われることも多いです.
なお, 実際にコードを書く時は, このような「仮の名前」を付けず, その変数にどのようなデータが入っているかが変数名から推測出来るようにするべきです.
例えば, ユーザーの名前を代入する変数は$foo
や$bar
ではなく, $user_name
などのように宣言した方が, コードは読みやすくなるでしょう.
print
関数を利用して, 変数に格納されたデータを出力することができます.
次のコードは, 123
という数値を格納した$number
というスカラー変数を, print
関数の引数として渡しているコードです.
use strict;
use warnings;
my $number = 123;
print $number;
このコードを実行すると, 次のような出力が得られます:
123
あなたの名前やIDのアルファベット表記をスカラー変数に格納し, スカラー変数に格納した文字列をprint
関数で出力するコードを書いてみましょう