• ベストアンサー

特定の文字列が含まれているかどうか確認したい

文字列 $a に、文字列 $b が含まれているかどう確認したいと思っています。 $a = "abcdefg"; $b = "cde" なら「真」としたいです。 (要するに、シェルの case や fgrep に似たことをしたい) ただし、文字列には記号が含まれている可能性もあるため、 正規表現も使いづらい(?)です。 具体的にやりたいことは、$a にはコンマ区切りのメールアドレスのリストが入っていて、 $b のメールアドレスが $a のリストに含まれていない場合のみ、$b を $a似追加すると いうことがやりたいです。 何か良い方法はないでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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 }

entree
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

$aがコンマ区切りなら、splitを使って配列にすれば、個々での比較が楽になります。これなら何も考えずにできる一番楽な方法だと思います。効率はあまりよくないですが。後はjoinを使ってコンマ区切りに戻してやって下さい。

entree
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

探すのが只の文字列なら index を使う、という方法があります。 詳しくは perlfunc で

entree
質問者

お礼

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

すると、全ての回答が全文表示されます。

関連するQ&A