Non ho mai usato il $&, anche perche` sconsigliato dal manuale (problemi di performance).

Invece io userei il $1 :
codice:
if($a =~ /\W([\w\.]+\@(\w+\.)*\w+)\W/) {
print "$1\n"; 
}