[Perl] CGI.pmはとても読みにくい

こんにちは。
今日も今日とて仕事人のおじいさんです。
つーか、最近むやみに腹を立てておりますね。何をしていたかというと、同僚の王子やばあやがCGI.pmの中身を見ていたのをハタから眺めていたわけで。
CGI.pmの中身、あれはひどいですね。

それだけだと、記事にもならんので若干続けます。
CGI.pmの最低な所は、メンバ関数の作り方がおかしいことですか。


%SUBS = (
'asString' => <<'END_OF_FUNC',
sub asString {
...
}
END_OF_FUNC


えーっとメンバ変数をなぜハッシュに突っ込んでるんでしょうか??
非常に驚きました。なんか、プライベートメソッドにでもしたかったんでしょうか。
おじいさんはあまり読みこんでいないので、理由不明です。
まあ、もう少し読んでいる同僚のばあやもプリプリ起こっていましたので、どうであれ、読みにくいことだけは確かですかね。
標準モジュールなんだからもう少しなんとかならんのかと。

それともう一つ。
ファイルのuploadを受け付けるのにCGI.pmを使えるのですが、この実装を見ていると、理論的にはファイル名が衝突する可能性があるようです。
フツーに使っている程度では問題ないんですけれどね。

結局、

sysopen($ref,$safe,Fcntl::O_RDWR()|Fcntl::O_CREAT()|Fcntl::O_EXCL(),0600) || return;

という所で排他制御をしているわけなんですが、O_EXCLは理論的にはファイルの作成が衝突する可能性があります。
ちゃんと排他制御するなら、ロックをかける必要があります。

まあ、この辺は標準モジュールといえどちゃんとsafeだと書かれていない限り信用しないのが普通スタンスだと思いますが。


まー、こうして見ていると、CGI.pmはコードリーティングの教材にはならんですな。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック