• 締切済み

CGIプログラムでわからない行があります

こんばんわ。 あるCGIプログラムのサンプルを読んでいるのですが、どうしても理解できないところがあります。 foreach(@a) { $n ++; $a[0]=~/([^=]+)=([^=]+)/; $ENV "NAME" . $n = $1; $ENV "VALUE" . $n = $2; } このループは一体どんな処理をしているのでしょうか。 部分だけの抜粋なので、わかりにくいかと思いますが とりあえず記号の意味だけでもわかればと思っております。 宜しくお願いします。

みんなの回答

  • wogota
  • ベストアンサー率42% (66/154)
回答No.1

コメントをつけると、こんな感じになると思います。 foreach(@a){         # 配列@aの個数だけループを行う $n++;             # $nをインクリメントする $a[0]=~/([^=]+)=([^=]+)/; # @aの0番目の要素(文字列)で、=で分けられた                 # 左右に対し、左は$1、右は$2に代入する $ENV "NAME".$n= $1;  # 環境変数として、"NAME?"(?には$nの数値を文字列に                 # したものが入る)に$1を設定する $ENV "VALUE".$n=$2;  # 同じく"VALUE?"に$2を設定する } となります。が、$a[0]という部分が何か変ですので、$_か$a[n-1]かも知れないです。 抜粋ということですので、$nはこのループの前で$n=0などの初期化がされていると思います。 ということで、正規表現を調べてみたほうがいいかもしれません。

関連するQ&A