使わないと忘れる
2年前まではまだ、習得率(?)がJavaと変わらない程度だったんですが、最近は圧倒的にJavaが多くなったのと、shellスクリプトを使うことが増えたため、使う機会が減っていました。
で、先日久しぶりにPerlで使い捨てスクリプトを書こうとしたら、「あれ、代入じゃないときの配列のdeep-copyってどうやるんだっけ?」などという事態に(おおげさ)。具体的には下記のサンプルコードの"@a2"のところ。
@a1 = qw( a b c ); @a2 = @a3 = @a1; # 1,2 は mapの使い方としては正しくない @z1 = map { $_ = 'Z' } @a1; @z2 = map { $_ = 'Z' } @{[@a2]}; @z3 = map { 'Z' } @a3; print "@a1 : @z1 \n"; # Z Z Z : Z Z Z print "@a2 : @z2 \n"; # a b c : Z Z Z print "@a3 : @z3 \n"; # a b c : Z Z Z