• ベストアンサー

$hts =~ s/##([^#]+)##/$FORM{$1}/g の意味を教えてください!

お世話になります。 perl素人なのですが必要に迫られてWEBで調べながら ソースを解析していますが、次のコードで完全に止まってしまいました。 $hts =~ s/##([^#]+)##/$FORM{$1}/g この場合、 #hts から ##([^#]+)## を探して $FORM{$1} に全て置き換えようとしていると思うのですが、以下2点が理解できず困っています。 1.##([^#]+)## の意味 $htsに##で囲まれた文字列が複数あるのでそれら全てを探すということでしょうか? 2.$FORM{$1} の意味 $1は1.で検索した結果だと思いますが、$FORM{ }は一体なんでしょうか? 素人がいきなり解析するのは無謀なのは承知の上ですが、 どうしても業務で必要なので、お知恵をお貸し下さい。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

1. perlを基準に「正規表現」で調べてごらん 2. 同じくperlでHTMLのformデータを受け取る方法を調べてごらん

yamako_mix
質問者

お礼

早速ご回答いただいてありがとうございます。 1.##([^#]+)## の意味 ##~##で囲まれた文字列を探す為の指定で、 ##~##の間は、#以外の文字([^#])が、 1回以上出てくる(+)ということですよね、多分。 2.$FORM{$1}の意味 1.で見つけた文字列はフォームのエレメント名になっていました。 つまり各##~##の文字列を対応するエレメントの値に置き換える、 ということかと思います。 解釈はこれでいいのでしょうか・・?

その他の回答 (1)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

>各##~##の文字列を対応するエレメントの値に置き換える、 >解釈はこれでいいのでしょうか・・? はい,その解釈で正しいです。

yamako_mix
質問者

お礼

jjon-comさん、ありがとうございます。 お陰様でスッキリしました。 PERLはメタ文字などの特殊な指定がたくさんあって、 素人にはハードルが高いですね(^^; 今回の解析が済んだら基礎から勉強しなおします!

関連するQ&A