カスタム検索
このエントリーをはてなブックマークに追加
tomo.gif (1144 ツバツイツト)line.gif (927 ツバツイツト)line.gif (927 ツバツイツト)line.gif (927 ツバツイツト)To previous pageTo home pageMailing to me

これはいったいどういう意味なのか

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


To previous pageTo home pageMailing to meJump to Top of pageline.gif (927 ツバツイツト)line.gif (927 ツバツイツト)tomo.gif (1144 ツバツイツト)
カスタム検索



このエントリーをはてなブックマークに追加