変数

変数とは、値を保存しておく箱のようなものだ。 Perl には様々な種類の変数があるが、最初に覚えておくべきなのはスカラー変数だ。 スカラー変数とは何かというと…、まあ最初のうちは「ふつうの変数」とでも覚えておいてもらいたい。

Perl では、変数名に使える文字は「アルファベット、数字、アンダースコア」に限られている。 しかも数字は最初の文字としては使えない。 また、スカラー変数の場合は名前の先頭に「$」を付ける。 たとえば次のような名前が有効だ。

$a
$Temp1
$FILE_NAME

一方、次のような名前は全部エラーになる。

$Ten%ofAmount
$1Temp
$FILE-NAME

スカラー変数には、数値でも文字列でも自由に代入できる。 まずは数値の代入と計算、表示について見てみよう。

$a = 1234;
$b = 5678;
$c = $a + $b;
print "a + b = $c\n";

最初の行では変数 $a に 1234 を、次の行では $b に 5678 を代入している。 3行目でその和を計算し、$c に代入する。 4行目は、その結果を表示する。 言うのを忘れていたが、Perl プログラムでは各文の最後は必ずセミコロン「;」で終わっている必要がある。

print の部分は若干の解説を必要とするだろう。 print は、基本的に指定された変数、文字列、数値を出力する。 上の例では「"a + b = $c\n"」に当たる文字列が表示される。 この文字列はダブルクォート「"」で括られているが、これは中身の変数名はその内容で置き換えられ、他の特殊文字もすべて変換されることを意味する。 つまり「a + b = $c\n」は、「a + b = 6912<改行>」に変換される。 そののち、print 文がそれを出力するわけである。

print は、コンマ「,」で区切られた変数、文字列、数値を順番に繋いで表示する機能ももっている。 上記の例ならば、「print "a + b = ", $c, "\n";」と書いても同様の結果が得られる。

文字列を表わすダブルクォートは、変数や特殊文字を変換する機能を持っているが、シングルクォート「'」を使って括るとそのような変換を行わなくなる。 「print 'a + b = $c\n';」と入力すると、変数名や改行を表わす \n はそのまま表示されてしまう(もちろん改行されない)。 ダブルクォートで括られた文字列の中で、$ そのものや \、ダブルクォート自身を表示したいこともあるだろう。 そういうときは \ を付けて、文字の特殊な意味を打ち消すことができる。 「\$c」 とか、「\\n」、「\"」のように指定すればよいのだ。 また、シングルクォートで括った文字列の中でシングルクォートを使いたい場合も、「\'」という表記は使用できる(他の表記、たとえば「\$c」などはそのまま表示されてしまう)。

さて、変数には文字列も代入することができる。 やり方は数値のときと同じく、= を使って行う。

$s = "Hell,"
$t = "World";
print "$s $t\n";

Perl では、文字列同士を「+」を使って足し合わせることはできない。 もし Basic のように文字列の連結を行いたいのなら、ピリオド「.」を使って繋ぐことができる。

$s = "Hell,"
$t = "World"
$u = $s ." " .$t ."\n";
print $u;

スカラー変数には数値でも文字列でも好き勝手に代入できる。 その取り扱いの区別は、Perl がなんとなく行ってくれている。 たとえば、数値として問題のない文字ばかりで構成されている文字列を代入した変数は、数値としても扱われる。

$a = "1234";
$b = "5678";
$c = $a + $b;
print "a + b = $c\n";

逆に、数値として扱えない文字を含んだ文字列変数を算術に使うと 0 とみなされる。


[go to next chapter]
[back to index]