Perl の正規表現についての質問です。

以下のプログラムですが、うまくマッチしてくれません。
(止まってしまいます。)

@dummyには、10種類のいろいろなURLアドレス(EUCコード)
@kiken_urlには、「%」「?」「=」などの半角文字や、「sex.com」などを入れています。(EUCコード)

# URLのチェックを行う
$j = 0;
foreach ( @dummy ){

$aaa = $_;

foreach ( @kiken_url ){

$bbb = $_;

if ( $aaa =~ m/$bbb/ ) {
$dummy[$j] = "DED!!!";
}
}
$j++;
}

どなたか、間違いをしてきしていただけないでしょうか?

回答の条件
  • URL必須
  • 1人20回まで
  • 登録:2007/04/06 20:09:05
  • 終了:2007/04/13 20:10:03

回答(2件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/04/06 20:21:05

ポイント35pt

たとえば「?」等の文字列の時に、

if ( $aaa =~ m/?/ ) {

と解釈されてしまい、実行できない。


それぞれの文字をエスケープするか、この程度であれば、index 関数にしたほうがいい。

@dummy = qw(http://sex.com/ http://example.com http://example.net/%);
@kiken_url = qw(% ? = sex.com);
 for (my $i=0; $i < @dummy; $i++ ){
         my $aaa = $dummy[$i];
         for ( my $j=0; $j<@kiken_url; $j++ ){
                 my $bbb = $kiken_url[$j];
                 if ( index($aaa,$bbb) > -1 ) {
                         $dummy[$i] = "DED!!!";
                 }
         }
}
print "$_\n" for @dummy;

http://q.hatena.ne.jp/answer

id:zachouR

なるほど!!!

ありがとうございます!

非常に助かりました!

2007/04/06 20:24:34
id:smile2008 No.2

smile2008回答回数62ベストアンサー獲得回数02007/04/07 00:03:16

id:zachouR

非常に申し訳ないのですが、どこを参考にすればいいのでしょうか?

2007/04/09 09:52:28

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません