Perlは難解 part2

プログラミング
スポンサーリンク

Perl難かしいの続き。

ついに検索不能な「$_」の意味が分かりました。
これ、特殊変数というものだったのです。
でも正体分かったけど、よくわからんない。

上のリンク先から引用
>デフォルトで入力やパターンマッチの対象になる特殊変数です。

なんとかよくわかんないながらも、掲示板を改造。
書き込みでリンクを設定した場合、(本文中にttpという文字列を書き込んだり)
正当な書き込みのチェックかどうかのルーチンへ遷移するようにはい。

書き込みなくても、広告が毎日書き込まれて削除が面倒だから、
これで広告が減るといいなあ。
コンピュータの自動書き込みなら多分、ブロックされると思うんだけど。
様子見ということで。

しかし……本文を取得するために、
周りのコード(AiremixのMireillecore.cgiより)を見つつこんなコード書いてしまったのですが

my$body = ''; ←変数用意
my%item=($CF{'ngWordsItems'}||'body=本文')=~/(\w+)=(\S+)/go; ←goってなんだろう検索できない。

↑$CFの連想配列で取得したものを、正規表現で区切って、ハッシュ変数に格納?ハッシュのキーと値は?

for(keys%item){ ←ハッシュ変数itemに、格納されている値の数だけ繰り返す?
$body = $IN{$_}; ←!?
}

自分で書いておいて何やっているかさっぱり……

コメント

  1. 智紀 より:

    スペースが抜けて見にくくなってますが。。。>my%item = ($CF{\’ngWordsItems\’}||\’body=本文\’)=~ /(\\w+)=(\\S+)/go;「=~」はパターン結合演算子で左辺 =~ /パターン/オプションの書式となっています。%itemはハッシュ変数の事を指します。$CF{\’ngWordsItems\’} か body=本文に対して以下のパターンが適応されて item に格納されることを指します。\\wは英単語([_a-zA-Z0-9]と一緒)が1文字以上が入って次に「=」が入って\\Sは空白以外の文字 ([^ \\t\\n\\r\\f]と一緒)が1文字以上含まれている場合で「/」の最後のgはマッチするものすべてoはパターンコンパイル(変数展開を1度だけ行う最適化)を指し示します。つまりiniファイルのような形式のデータをパースしてハッシュ変数に格納することを示していると思われます。//———————-3行目はそのとおりです。http://www.kent-web.com/perl/chap7.htmlなんかだとわかりやすいかもです。

  2. なたで より:

    アドバイスありがとう!

  3. […] Perl難かしい2 へ続く カテゴリー: program   タグ: Perl   この投稿のパーマリンク ← Windows蛾物故割れた OSを入れなおしてその後の様子 → LikeBe the first to like this . […]

タイトルとURLをコピーしました