サブルーチンのプロトタイプ

Perlではサブルーチンのプロトタイプを書くことができるが、これがけっこうアレ。

sub routine( \@ )
{
       my $ref_array = shift;
       my @array = @$ref_array;

       print "array(in) = :".join( ';', @array).":\n";

       $ref_array->[0] = 9;
}

とプロトタイプで、配列のリファレンスをとるように宣言しておくと、

my @array = (1,2,3,4);
routine @array;
print "array(out) = :".join( ';', @array).":\n";#-->9234

のように、配列をリファレンスにせず、直接渡してしまうように記述しても、サブルーチンには
リファレンスが渡される。
これ、使っちゃうと、保守が大変そうだなぁ。