正規表現で良くやるミス
question:1107762500 の件。
文字クラス ("[ ]") を使う場合、 "-" は先頭に置くのが基本。(エスケープでもいいとは思うけど、後で読みにくくなる気がする)
……だけど、良く忘れるんですよね。(私もたまにやる……そしていつも悩む)
ちなみに、今回の場合は、以下の様にすると、後で読みやすくていいかな、と。
my $char = q(-\w@#$&'*+=?^`{|}~); if ($mailaddr =~ /[^$char]+/) { ...
まぁ、プログラムの書き方は人それぞれなので、あくまでも、「私にとって」読みやすい、というだけの話ですが。