Perlについての質問箱 34箱目at TECHPerlについての質問箱 34箱目 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト400:デフォルトの名無しさん 08/02/11 11:28:03 >>397 答えそのものは書かないけど、以下のことが必要。 '\[google:\w+\]'の部分は'\[google:(\w+)\]'でしょうね。そうしないと $1で受け取れないから。 置換をするなら、 $input_str =~ s/$key/conv($1, $hash{$key})/eg; などとしておいて、 sub conv { my ($word, $str) = @_; $str =~ s/\$1/$word/g; $str; } などとでもしておくとか。 で、 URLのクエリー部分に仕込む文字列はURIエスケープが必要。 そんで、マルチバイトの場合、どの文字コードにしてからエスケープするかも 考える必要あり。 さらに、<a>と</a>の間の文字列に使用するときはサニタイズ処理が必要(XSS対策)。 >>398 の方法だと、perlコードをそのまま解釈してしまうので、別の危険あり。 「与えられた文字列」は誰が与えるのかがとても大きな問題です。 URLにリンクを張るのは、大崎氏のPerlメモが使えると思います。 401:デフォルトの名無しさん 08/02/11 11:57:26 >399 もちろん知ってます。 置換条件と置換パターンを配列などに保持しておく(または外部から読み込む)という考え方自体が セキュアではないということでしょうか? >400 ( )で括って無かったのは書き込み時のミスです、すみません。 手元のソースでは書かれてたんですが、適当な条件に直すときに忘れてしまったようです。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch