新規記事投稿 フォロー記事投稿 記事のキャンセル
From: TAD <hotani@mua.biglobe.ne.jp>
Subject: 配列の何処が不都合な性格? (^^;;
Date: 1999/02/03 18:29:34
Reference: mesh.program/00608

三葉工房さんは、いしどうさんやYasu.Fさんのアドバイスをどう捉えたのでしょうか?
おふたりのアドバイスを全く聞いていない(読んでいない)ように思えるのですが...
理解できなかったのなら、どこがどうわからなかったのかさらに質問してはどうですか?
そうしないとせっかくのアドバイスが無駄になってしまいますよね。

質問に対して回答をもらったなら、わかったのかわからなかったのか、
その回答に対して何か反応をした方が良いのではないでしょうか。

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

>先程の三葉工房ですが,ユーザーパスワードのマッチング方法は,とても難しく
>今だに謎に包まれたままです。
>
>その難しくなる原因とは,foreachやfor等の好き嫌いな部分がある点です。

「foreachやfor等が好き嫌いをして」三葉工房さんの思うとおりに動いてくれない
ということですか? そんなことある筈ないじゃないですか。
あくまでも
  「プログラムは、設計されたとおりではなく、書かれたとおりに動く。」by Yasu.Fさん
です。

ひとつ例を挙げると、

>$frag=0;
>$mart="muraei banner kojima sonic oacice colonbia kingdam hyogo serax kureeiji morisawa charenge
>notenki tohoho goichi odakyu mailmg";
>
>@mart=$mart;

この @mart=$mart; は何をしてるかわかりますか?
$martのスカラー変数に入っている文字列を@martの配列の1番目(添え字は0番)に入れてるだけですよ。
勝手に「配列へ順番に格納してくれる」と思いこんでませんか?

もしそういうことがしたいのであれば
「文字列を配列へ振り分けるには、Perl の内蔵関数であるところの
 split を使用すればいいと思います。」by いしどうさん
ということです。

例えば、

  $mart = "muraei banner kojima sonic oacice colonbia kingdam hyogo serax kureeiji morisawa charenge
          notenki tohoho goichi odakyu mailmg";
  @mart = split(" ",$mart);

このようにすれば、$mart変数の中の文字列が空白で分割されて、@mart配列の0番から16番に
格納できます。
これがやりたかったんですよね。

このことからも判る通り、三葉工房さんはまだ perl を正確に理解していないようですから
もう一度参考書を読み直し、プログラムの1行1行が何をしているかを再確認した方が
良いと思いますよ。
それが判らないのに「ちゃんと動くものを作ろう」というのは無理な話です。

まずはいきなりプログラムを作るのではなく、焦らずに勉強し直しましょう。