文字列$html に含まれるメールアドレスの全てをリストに格納したいのですがどうすればいいのですか?

while ($html =~ /([-.\w]+@[-.\w])/g)
{ push(@list, $1); }

とやると固まりました。無限ループかもしれません。
どうやったらやりたいことができるでしょうか?