アプリ版:「スタンプのみでお礼する」機能のリリースについて

文字列 $a に、文字列 $b が含まれているかどう確認したいと思っています。

$a = "abcdefg"; $b = "cde" なら「真」としたいです。
(要するに、シェルの case や fgrep に似たことをしたい)

ただし、文字列には記号が含まれている可能性もあるため、
正規表現も使いづらい(?)です。

具体的にやりたいことは、$a にはコンマ区切りのメールアドレスのリストが入っていて、
$b のメールアドレスが $a のリストに含まれていない場合のみ、$b を $a似追加すると
いうことがやりたいです。

何か良い方法はないでしょうか?
よろしくお願いいたします。

A 回答 (3件)

表示がくずれるので空白2文字を全角空白で書いていることに注意



use strict;
use warnings;
use feature 'say';

my $text = 'hello :-)';
my $word = ':-)';

if ( $text =~ m/\Q$word\E/ ) {
  say 'matched';  # matched
}

my $quoted = quotemeta $word;
say $quoted; # \:\-\)
if ( $text =~ m/$quoted/ ) {
  say 'matched';  # matched
}
    • good
    • 0
この回答へのお礼

ありがとうございました。
どちらの方法もOKでした。

お礼日時:2012/01/22 10:03

$aがコンマ区切りなら、splitを使って配列にすれば、個々での比較が楽になります。

これなら何も考えずにできる一番楽な方法だと思います。効率はあまりよくないですが。後はjoinを使ってコンマ区切りに戻してやって下さい。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2012/01/22 10:03

探すのが只の文字列なら index を使う、という方法があります。


詳しくは perlfunc で
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2012/01/22 10:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!