my @old = qw( 12 34abc56def 999 );
my @new  = map { /([a-z]+)/ } @old;
for my $n ( @new ){ print "[$n]\n"; }
print scalar @new,"\n";

上記コードの出力は、以下を期待していたのですが、

[]
[abc]
[]
3

実行してみると、

[abc]
1

となります。
どうしてこのような出力になるのか理解できません。
(mapの使い方が間違っている?)
どなたか、解説していただけないでしょうか?