Question: I have this below issue in Perl.I have a file in which I get list of emails as input. 

I would like to parse the string before '@' of all email addresses. (Later I will store all the string before @ in an array)

For eg. in : `abcdefgh@gmail.com`, i would like to parse the email address and extract abcdefgh.

My intention is to get only the string before '@'. Now the question is how to check it using regular expression. Or is there any other method using substr? 

while I use regular expression : $mail =~ "\@" in Perl, it's not giving me the result.

Also, how will I find that the character '@' is in which index of the string $mail?

I appreciate if anyone can help me out.

```
#!usr/bin/perl

$mail = "abcdefgh@gmail.com";

if ($mail =~ "\@" ) {
    print("my name = You got it!");
}
else
{
    print("my name = Try again!");
}

```

In the above code $mail =~ "\@" is not giving me desired output but ($mail =~ "abc" ) does.

$mail =~ "@" will work only if the given string $mail = "abcdefgh\@gmail.com";

But in my case, i will be getting the input with email address as its.

Not with an escape character.

Thanks,

Tom

Answer: 
The `@` sign is a metacharacter in double-quoted strings. If you put your email address in single quotes, you won't get that problem.

Also, I should add the obligatory comment that this is fine if you're just experimenting, but in production code you should not parse email addresses using regular expressions, but instead use a module such as [Mail::Address](http://search.cpan.org/~markov/MailTools-2.06/lib/Mail/Address.pod).
What if you tried this:

```
my $email = 'user@email.com';

$email =~ /^(.+?)@/;
print $1

```

$1 will be everything before the @.