メールアドレスチェックの正規表現

メールアドレスの、@より前だけをチェックするための正規表現に苦心する。
使われている文字は[a-z]と-だけであることが解っているので、if ( $mail =~ /[^-[a-z] ]/ )と書いたが思うように動かない。
実行結果を視覚化しようとs/([^-[a-z] ])/<em>\1<\/em>/としたら、全角文字をすべて半角単位で置換しているようで出力結果がすべて?に。こういうときはどうしたら良いんだろう。