新規記事投稿 フォロー記事投稿 記事のキャンセル
From: Yasu.F <uasuf@big.or.jp>
Subject: Re: 配列の此処が不都合な性格
Date: 1999/02/04 02:32:10
Reference: mesh.program/00608

#605#607や、その他あなたの一連の投稿に対する多くの方々のフォロー記事に
目は通されているのでしょうか?
この記事の内容を読む限り、どうもそのようには見受けられないのですが…。

自分は独り言を言っているだけだから返事はしなくていい、ということでしたら
そうおっしゃってくださいね。

# でも、ここは独り言を書き連ねるのに適した場所とは言えません

2月3日に、三葉工房の管理者さんは書きました。

>その難しくなる原因とは,foreachやfor等の好き嫌いな部分がある点です。

> それらのループ関数は,print関数は,気に入っていますが,ifと言う条件指定
>関数は気に入ってないようです。

# Perlのif構文やforeachなどのループ構文は「関数」ではありません

「好き嫌い」「気に入る」などという「詩的」な表現では、いったい何が
言いたいのか分かりません。

あなたはここで文学作品を発表しているのですか?
そうではないのでしたら、もっと他人に意味が伝わりやすいような文章を
書くように努力してください。

# それに、ここは文学作品を発表するのに適した場所とも言えません

>ですから,
>
>$frag=0;
(snip)

プログラムを例示するときは、それ自身では整合性の取れていないようなコードの
断片ではなく、目的の処理を行うための最小限かつ完全な形のコードを示して
ください。
@newmartや$sdはどこから登場したのですか?

このコードだけを提示されても、結局どういう処理を行ってどういう結果が
期待されているのか分かりません。

> つまり,for文の中のprint文を
>if(banner eq $fgh[$i])としても,条件指定の場合,同一のループ条件とは
>いえども$fgh[$i]は配列の全てにマッチせずに,配列の最初か最後の値のみか
>空白にマッチしてしまいます。

bannerとは?

print "..."; をそのまま if(banner eq $fgh[$i]) なる文に置き換えて、Perlで
正しく実行されるのですか?

「マッチ」したかどうか(何に「マッチ」するのか上の文からでは全く
分かりませんが)は、どういうふうに判断したのでしょう?

>そのループの性質に伴い,ユーザーパスワードのマッチングのプログラミングは
>おのずと非常に困難になります。

厳しい言い方をするようですが、プログラミングの困難さを生み出しているのは
「ループの性質」などではなく、あなたのPerlに対する理解不足にほかならないと
思います。

思い込みでプログラムは書けません(それでもPerlは、プログラマの思い込みに
対してとても肝要な言語です)。日本語の文法を少しくらい間違ったところで
コミュニケーションが全く不可能になることはありませんが、プログラミング
言語は少しでも文法を誤れば絶対に思いどおりには動作しません。

> そのようにその壁を乗り越えるのは至難の業であるとは,言え身を粉にしてでも
>自分の力で思い当たる苦労を味わうべきでは,ないかなと思います。

それはそうなのかも知れませんが、CGIプログラムは貴重なサーバ資源を消費し、
また使い方を一歩誤れば重大なセキュリティ上の問題を引き起こす可能性も
あることを忘れてはなりません。
わたしがことあるごとに「CGIプログラミングは難しい、『自称初心者』が
CGIプログラムを利用するのはあまり好ましいことではない」と主張して
いるのも、そういう理由からです。

手許のマシンでPerlを実行できる環境があるのであれば(MacPerlに多少癖が
あるのは否めませんが)、まずは徹底的にその環境を使い込んで、Perlの
「作法」を手に馴染ませるのがよいと思います。

# そうすれば、「PerlはCGIプログラムのための言語である」といった
# 偏見を抱くことも無いでしょう