Modified: 5 March 2006
C言語は、コンパイラまで作ったほど熟知している私ですが、Perlのプログラムを見たらそこらじゅうに「いったいこれは何だ!」という記述がありました。
基本は同じはずなので、とても難解に感じました。それは、まず省略記述が多い、ときには驚くほど省略している。モジュールを多く使っているので、モジュールやそのモジュール参照の名前がPerlの解説本に載っていない。
右の本は、そんな私の気持ちにガンガンと説明してくれ笑えます。昔の言語を知らない人には、笑えないと思いますが、わかりやすいとおもいますし、Perlの作法も理解できると思います。
未定義の配列に値を代入してもいいの? (5 March 2006)
数値変数と文字変数の区別はないの? (5 March 2006)
"use CGI;"とか"use CGI qw/:standard/;"っていったい何?どういう意味? (24 April 2006)
初期化してないじゃん!? (5 March 2006)
"use strict;"って何?
"@_"ってどういう意味?
"CPAN"って何?
"DBM"って何?
"DBI::DBD"って何?
以下のように、配列を宣言して、いきなり、10番目に代入してもぜんぜ構いません。
my @array;
$array[10] = 5;
結果、"0"番目から"9"番目の値は、"undef"ですが、サイズは、"11" となります。
数字変数と文字列変数の区別はありません。どっちで処理するかは、演算子で決まります。
整数と小数の区別もありません。
C言語の場合は、"$sum"の初期化がされていないので以下のプログラムはエラーになります。結果、"$sum"の値は保障されていません。
しかし、PerlはOKなんです。
初めて使ったとき、"undef"という状態なので、以下のように数値として利用すると、0で初期化されたものとみなしてくれます。
while ($n < 100) {
$sum += $n;
}初めて使う変数("$str")を文字列として使うと、空文字列で初期化されたものとして利用できます。
$str .= $n;
"defined $n"で、未定義かどうかの判定もできます。
"use CGI;"とか"use CGI qw/:standard/;"っていったい何?どういう意味?
モジュールはクラスとして作られています。"use"は、クラスの定義宣言です。
"CGI"は、とても名前が安易ですが、実はCGIを作るときの、基本中の基本のCGIのパラメータを処理するクラス(関数セット)です。
したがって、"use CGI"は、CGIモジュールのクラスを定義しているのです。"use CGI"は、オブジェクト指向スタイルで、"use CGI qw/:standard/;"は、関数スタイルの宣言だそうです。
詳細は、以下の解説をご覧ください。http://homepage3.nifty.com/hippo2000/perltips/Cgi.htm#PROGRAMMING_STYLE