$matrix[0]に入ってるのは文字列ではなくてオブジェクトです。
なので
$dummy[0] = $matrix[0];
だとリファレンスのコピーになるので$dummy[0]を書き換えると$matrix[0]も書き換わります。
Math::Complexを使ったことないのでざっとしかpodを見てないんですけどコピーするところを
$dummy[0] = Math::Complex->make( Re($matrix[0]), Im($matrix[0]) );
に書き換えると期待されている動きをすると思います。

PS
オブジェクトが文字列に見えるしかけはoverloadプラグマです。
perldoc overload
もしくは
http://search.cpan.org/~nwclark/perl-5.8.8/lib/overload.pm
を参考にしてください。