最近やっとphpの配列は、perlの配列のリファレンスだと考えればいいんだとわかった。
んで、phpで関数に配列を引渡すときは、配列のコピーのリファレンスを渡していると考えればいいとわかった。

だから、phpのこれは
$array[$index] = $value;

perlのこれに対応するわけじゃなく
$array[$index] = $value;

これに対応しているわけで
$array->[$index] = $value;

phpのこれは
$array = array($val1,$val2,$val3);

perlのこれに対応している
$array = [$val1,$val2,$val3];

なのでphpのこれは
function f($array){
.......
}

perlのこれに対応するわけだったんだね。
sub f{
my $array = [@{$_[0]}];
.......
}