スペースを入れて見やすく書く

back
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)

コメントを入れてみましょう。
まぁ、他に例が思い浮かばなかっただけなんだけど。

back