x オプションを使う if ($str =~ /^([a-z\-]+\.?)*[a-z\-]\@mail\.example\.org$/) { と書いて、後で「え〜と、これは…」とならないように、 if ($str =~ # $str のメールアドレス(半角英数/ハイフン/ドット使用)で / ^ # 先頭が ( # [a-z0-9\-]+ ### 半角英数・ハイフンの繰り返しで始まり(ドットで始まらず) \.? ### ドットはあってもなくてもよくて(ただし2文字以上は繰り返さない) )* # 上2行の繰り返しがあってもなくてもよくて [a-z0-9\-] # @ 手前1文字は半角英数・ハイフン(ドットではない)で \@ # @ があって mail\.example\.org$ # mail.example.org で終わるとき /ix) { ### 条件として、大文字小文字は無視する(ignore) コメントを入れてみましょう。 まぁ、他に例が思い浮かばなかっただけなんだけど。