小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

Perlで引数に複数の配列を指定するには

Perlのサブルーチンは、引数を配列 @_ で受け取ります。
したがって、スカラー変数や一つの配列なら問題がないのですが、複数の配列を引数に指定すると、
受け取り側が一つの配列 @_ なので、複数の配列が一つにまとめられて、想定外の結果になってしまいます。
そのような場合は、配列のリファレンスを引数に指定します。

サンプル

use strict;

my (@aaa, @bbb);

@aaa = (111, 222, 333);
@bbb = (999, 888, 777);

&ccc(\@aaa, \@bbb);

print @aaa, "\n";
print @bbb, "\n";

sub ccc{
  my ($refaaa, $refbbb) = @_;
     $$refaaa[1] = "000";
     $$refbbb[2] = "000";
}