Perl難かしいの続き。
ついに検索不能な「$_」の意味が分かりました。
これ、特殊変数というものだったのです。
でも正体分かったけど、よくわからんない。
上のリンク先から引用
>デフォルトで入力やパターンマッチの対象になる特殊変数です。
なんとかよくわかんないながらも、掲示板を改造。
書き込みでリンクを設定した場合、(本文中にttpという文字列を書き込んだり)
正当な書き込みのチェックかどうかのルーチンへ遷移するようにはい。
書き込みなくても、広告が毎日書き込まれて削除が面倒だから、
これで広告が減るといいなあ。
コンピュータの自動書き込みなら多分、ブロックされると思うんだけど。
様子見ということで。
しかし……本文を取得するために、
周りのコード(AiremixのMireilleのcore.cgiより)を見つつこんなコード書いてしまったのですが、
my$body = ''; ←変数用意 my%item=($CF{'ngWordsItems'}||'body=本文')=~/(\w+)=(\S+)/go; ←goってなんだろう検索できない。 ↑$CFの連想配列で取得したものを、正規表現で区切って、ハッシュ変数に格納?ハッシュのキーと値は? for(keys%item){ ←ハッシュ変数itemに、格納されている値の数だけ繰り返す? $body = $IN{$_}; ←!? }
自分で書いておいて何やっているかさっぱり……
コメント
スペースが抜けて見にくくなってますが。。。>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なんかだとわかりやすいかもです。
アドバイスありがとう!
[…] Perl難かしい2 へ続く カテゴリー: program タグ: Perl この投稿のパーマリンク ← Windows蛾物故割れた OSを入れなおしてその後の様子 → LikeBe the first to like this . […]