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: 
Enabling warnings would have pointed out your problem:

```
#!/usr/bin/perl
use warnings;

$mail = "abcdefgh@gmail.com";
__END__
Possible unintended interpolation of @gmail in string at - line 3.
Name "main::gmail" used only once: possible typo at - line 3.

```

and enabling strict would have prevented it from even compiling:

```
#!/usr/bin/perl
use strict;
use warnings;

my $mail = "abcdefgh@gmail.com";
__END__
Possible unintended interpolation of @gmail in string at - line 4.
Global symbol "@gmail" requires explicit package name at - line 4.
Execution of - aborted due to compilation errors.

```

In other words, your problem wasn't the regex working or not working, it was that the string you were matching against contained "abcdefgh.com", not what you expected.
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).