Skip to content

Files

Latest commit

 

History

History
65 lines (43 loc) · 4.09 KB

scalar.md

File metadata and controls

65 lines (43 loc) · 4.09 KB

スカラー変数

変数とは?

プログラミングとは, 誤解を恐れずに言えば「入力されたデータに, 何かしらの処理を行って, その結果を出力する」ための手続きを記述するものです. その中で, 入力されたデータや, 一時的に必要になったデータを格納する場所(もの), それが「変数」です.

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という数値を入力しています. =という代入演算子を使うことで, =の左側(左辺)にある変数に, =の右側(右辺)の変数を入れる(格納する)ことができます. この操作を「代入」と呼び, 「$foo1を代入する」などのように呼びます. なお, 変数$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

練習問題 2-1

あなたの名前やIDのアルファベット表記をスカラー変数に格納し, スカラー変数に格納した文字列をprint関数で出力するコードを書いてみましょう