■■■■■■■■■■■■■■■■■■■■
CGI講座・リプレイDX
-第8講- Perlにおける変数(3)
■■■■■■■■■■■■■■■■■■■■
■1、本文への変数の適用■
前回の講義でPerlにおける変数の特徴として「undef値」を挙げたが
このほかの変数の特徴を詳しく見てみよう。
なんだか前回の冒頭でも同じことを言ったような気がするなぁ・・・
他のプログラム言語であれば、
変数を本文の中に適用するにはいろいろ面倒な手続きが必要である。
例えばJavaScriptの場合は
var hensu=10;
document.write("変数は" + hensu + "です");
と、計算式のように表現しなければならないが、
Perlの場合は
$hensu=10;
print "変数は$hensuです";
と、本文の一部にさり気な〜く使っても全く問題ない。
ただし、本文の一部に半角英数が混ざっているときには注意が必要である。
例えばこんな場合
$hensu=10;
print "長さは$hensucmです";
ここでは変数に10が入っているので
「長さは10cmです」
と表示したいところなのだが、
変数名「$hensu」につづいて半角英数「cm」がくっついているため、
「$hensucm」という新しい変数とカン違いしてしまう。
そのため前回の講座で述べた「undef値」が入ってしまい、
結局「10cm」と表示されることはない。
■2、undef値の落とし穴・その2■
変数に続けて半角英数を入力すると別の変数扱いになってしまう、
これはPerlの変数の特徴、「初期値無しでも変数が使える」、
いわゆるundef値の存在が裏目に出た結果といえるだろう。
先の例を挙げれば変数「$hensu」に長さの単位「cm」をつなげると
「$hensucm」という新たな変数として認識されてしまう、というのがそれにあたる。
これを防ぐためには変数の部分とただの表示する文字列の部分とを
明確に分けなければならない。
その方法は以下の通りである。
print "長さは${hensu}cmです";
変数の前後を{}で囲むことにより、囲まれている部分までが変数名、
そうでない部分は通常の文字列として扱いを分けることが可能になってくる。
使う機会は余り多くないかもしれないが、
変数と半角英数を混在させて使うときにはこのことを忘れがちなので
是非覚えてほしい。
■3、数値VS文字列■
「100円たす200円はいくらですか?」と聞かれれば
おそらくほとんどの人は「300円です」と即座に答えられるだろう。
このとき、無意識のうちに頭の中では
100円 + 200円 = 300円
という計算をしている。
これと同じ事をコンピュータにさせることができるか、と言うと
答えは「否」である。
確かに
100 + 200
という数値の計算であればコンピュータでもできる。
しかしそこに単位「円」がついてしまうと
それは文字列として認識されてしまうため、計算できなくなってしまう。
これは多くのコンピュータ言語が数の計算においては
「数値」しか扱えない、という特性によるものである。
ところがPerlの場合となると話は変わってくる。
100円 + 200円
と、単位がついている状態でも計算には全く問題がなく
正しく「300」と答えを出してくれる。(さすがに単位まではつかないが・・・)
より正確にPerlの書式に従って書くと上の式はこのようになる。
$nedan = "100円" + "200円";
いずれも単位「円」がついており、
「""」がついているため、扱いは文字列となる。
そのため一見すると文字列どうしを足しているため、
プログラミングの経験のある人から見れば
この式は成立しないように見えるだろう。
だが、プログラミングの経験のない人から見れば
「数字が入っているから計算できるのではないか?」と考えることだろう。
Perlはまさにその考え方を地でいくような言語で、
「文字列であろうと数値であろうと、中に数字が入っており
なおかつ計算の対象となっているのであれば
状態の如何にかかわらず数値として扱い計算する」
という性質を持っている。
したがって下のような文字列と数値が混ざった計算も可能である。
$nedan = "100円" + 200;
ここでもPerlという言語の柔軟さ(ここまで来ると豪快さ、と言うべきか)
が発揮されている。
■4、Perlの変数の特徴(まとめ)■
3回にわたって変数について説明したため、
最初の方を忘れている人がいるかもしれないので
ここで変数についてまとめておく。
・変数宣言(初期値の設定)がいらない
・文章の中でさりげなく使うことができる
・文字列でも数値でも数字が入っていれば計算できる
変数の話はとりあえず今回でおしまい。
次回からはいろいろな構文を見ていくことにする
第9講につづく
---------------------------------------------------------------------
発行人: 塚田 伊助
発行所: 伊助の鍛錬場 http://isukenet.s20.xrea.com/
連絡先: isuke_tukada@hotmail.com
もどる