Perl分かってない

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

my @list = ('apple', 'banana', 'orange');
my @list2 = @list;
map { s/a/A/g } @list;
print join("\n", @list), "\n\n";  # Apple - bAnAnA - orAnge
print join("\n", map { s/a/A/g } @list2), "\n";  # 1 - 3 - 1

後者の動作が理解出来てない。きっとすごく基本的なことなんだけど。

print join("\n", map { "[$_]" } @list2), "\n";

だと、それぞれを[]でくくった配列が表示されるんだけど、正規表現でほげるとダメ。1行で書けないのかな。書く方法はあると思うんだが…


以下、追記。
id:kazukichopさんからトラバもらったので、せっかくだからもう少し書いてみる。
実際のところ、手段を問わなければ

my @list3 = ('apple', 'banana', 'orange');
print join("\n", sub { map { s/a/A/g } @_; return @_}->(@list3)),"\n";

とかやってしまえば1行で書けるのは書ける。とは言え、結局やってることは関数作って、そいつを通してるだけだからあくまで形式上1行になっているだけ。もっとシンプルに書けそうなもんだけど、どうしたらいいんだろね。
あと、Perlでは@_は引数へのリファレンスになってるらしく、上のを実行すると@list3の内容が変わる。無名関数の中で、my (@ar)=@_; とか書いてそいつを使えば非破壊で書ける。忘れそうなので、今のうちに書いておく。


更に追記。
id:hibomaさんが教えてくれたよ!

print join "\n", map { s/a/A/g; $_ } @list;

これでぉk。ドクターペッパーで有名な某社の人からコメントもらえるなんて光栄です!