プロが教える店舗&オフィスのセキュリティ対策術

こんばんわ。
あるCGIプログラムのサンプルを読んでいるのですが、どうしても理解できないところがあります。

foreach(@a)
{
$n ++;
$a[0]=~/([^=]+)=([^=]+)/;
$ENV "NAME" . $n = $1;
$ENV "VALUE" . $n = $2;
}

このループは一体どんな処理をしているのでしょうか。
部分だけの抜粋なので、わかりにくいかと思いますが
とりあえず記号の意味だけでもわかればと思っております。
宜しくお願いします。

A 回答 (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などの初期化がされていると思います。

ということで、正規表現を調べてみたほうがいいかもしれません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!