in reply to Validate email id

$id =~ s/\s+$//g; $id =~ s/^\s+//g;

The /g option means "global" but the anchors mean only at the beginning or end so remove the /g option.

elsif($id =~ /^.*\@\w+\.com|org|net/)

That says to match the pattern ^.*\@\w+\.com OR the pattern org OR the pattern net.    You need parentheses to group the alternation correctly:

elsif($id =~ /^.*\@\w+\.(?:com|org|net)/)