Perlプログラムに関する各種メモ書き

スペースで区切られた複数のキーワードが全てマッチするかどうか調べる

検索エンジン等の入力で「Perl テスト 方法」と入力すると「Perl」「テスト」「方法」全てにマッチする結果が表示されるが、こういうのをやっているcpanモジュール探してみたのだけれど見つからなかったので、簡単に書いてみる(超簡易バージョン)

# usage
# listmatch($data,$search_str_not_separated);
# listmatch(検索されるデータ(文字列), スペースで区切られた検索したい単語(文字列))
# 戻り値 1:マッチした 0:マッチしない

sub listmatch{
    my ($data, $search_str_not_separated)=@_;
    $search_str_not_separated=~s/ / /g;
    my @search_list=split(/?s/,$search_str_not_separated);
    my $s; my $flag=1;
    foreach $s(@search_list){
        unless($data=~m/?Q$s?E/i ){ $flag=0; }
    }
    if ($flag==1){ return 1; }
    else { return 0; }
}

No.326
08/22 14:53

edit