- ベストアンサー
文字列変換
$word = 'abc'; &word_check($FORM{'comment'}); sub word_check { local($wd) = @_; local($flag); foreach ( split(/,+/, $word) ) { if (index($wd,$_) >= 0) { $flag=1; last; } } if ($flag) { $FORM{'comment'} =~ s/($word)/【文字変換$1】/g; } } $FORM{'comment'}に$wordの文字列が含まれていた場合には対象文字列を変換しようと考えています。 上記のように$wordにabcのみでしたらうまく変換されるのですが、 $word = 'abc,123';というように複数指定した場合にうまくいきません。 繰り返す処理を使うのだと思いますが、あまり知識がないため、うまく出来ません。よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>ある程度詳しくなるためには専門の本(プログラミングPerl等)を徹底して読んだほうがいいのでしょうか。 日本語で読める情報に限ると、Perlに関するものは 古いものが良く引っかかる傾向にあり、その点で云うと セキュリティ云々も同じでしょう。 まあちゃんとやってる人はやっているのですが、 そういう人はまとめた形で公開してはいなかったり (blogは結構書いている)するので 探すのはちょっと面倒かもしれません。 単なる入門書ではなく、一歩進んだPerlプログラミングのための 本を紹介しておきます。 とりあえず最初の救命病棟を勧めしておきます。 Perlプログラミング救命病棟: http://www.amazon.co.jp/dp/4798109401 Perlベストプラクティス: http://www.amazon.co.jp/dp/4873113008/ 続・初めてのPerl 改訂版: http://www.amazon.co.jp/dp/4873113059/
その他の回答 (2)
- shirayukix
- ベストアンサー率43% (90/207)
indexを使わずにその場で置換します。 結果をreturnし、$FORM{'comment'}を結果に書き換えます。 my $word = 'abc,123'; $FORM{'comment'} = &word_check($FORM{'comment'}); sub word_check { my($wd) = @_; my @a = split(/,/,$word); foreach my $a (@a) { $wd =~ s/($a)/【文字変換$1】/g; } return $wd; }
お礼
ご回答ありがとうございます。 おかげさまでやりたい事が出来て大変助かりました。
- sakusaker7
- ベストアンサー率62% (800/1280)
こんな感じですか? #!/usr/bin/perl # -*- coding: utf8 -* use strict; use warnings; my $words = 'abc,123,def'; sub word_check { my $data = shift; foreach my $word (split(/,/, $words)) { next if $word eq ''; $data =~ s/($word)/【文字変換$1】/g; } $data; } my $data = 'xxxxaaaabcddd123eeedefzzz123'; print $data, "\n"; my $checked_data = word_check($data); print $checked_data, "\n"; >perl replacesample.pl xxxxaaaabcddd123eeedefzzz123 xxxxaaa【文字変換abc】ddd【文字変換123】eee【文字変換def】zzz【文字変換123】 本かwebページかわかりませんが、参考に使っている 資料がちと古いようですね。
お礼
ご回答ありがとうございます。 おかげさまでやりたい事が出来ました。 perlは本格的に勉強したことがなく、1年程前までは簡単なCGIの設置ができる程度でした。それからはkentさんが配布しているスクリプトをみながら、簡単な改造から始めています。(みようみまねですので、セキュリティバグ等が怖いですが・・・)そして、わからない部分はとほほのほーむぺーじさんを参考にさせてもらっています。 やっぱり、ある程度詳しくなるためには専門の本(プログラミングPerl等)を徹底して読んだほうがいいのでしょうか。
お礼
お勧め本をご紹介してくださり有難うございます。これをきっかけに、自分も配布できるようなスクリプトが書けるようになれたらなぁと、ますますやる気になってきました。感謝です。