В командной строке есть две проблемы:
Вы присваиваете переменную $ aa, но выполняете сопоставление с образцом для переменной $ kk.
Вторым является то, что @abcd интерпретируется как переменная в строке, разделенной символом "...". Переменная @abcd не определена, поэтому она интерполируется в пустую строку, и в результате вы получаете $ aa = "abcd".
Вы можете увидеть проблему с @ при вводе этого:
perl -e 'my $aa = "abcd@abcd"; print "$aa\n"'
Вы должны замаскировать @. Поэтому попробуйте это вместо:
perl -e 'my $aa = "abcd\@abcd"; if ($aa =~ /(\w+)@(\w+)/ ) {print "\n $1 \n $2 \n";}'