在perl中迭代2个矩阵

时间:2014-04-03 15:53:47

标签: perl matrix syntax

我正在尝试编写一个在perl中将两个矩阵(实现为双数组)相加的程序。

我确定有一些功能可以为我做,但这是一个家庭作业,所以我需要自己做。

我的问题,我确定,是在语法中。你能解释我做错了吗?

sub matrix_add {
  my @matrix1 = $_[0];
  my @matrix2 = $_[1];
  for my $x (0 .. $#matrix1){
    my @line1 = @matrix1[$x];
    my @line2 = @matrix2[$x];
    for my $y (0.. $#line1){
        @line1[$y] += @line2[$y];
    }
  }
  return @matrix1
}

我没有收到任何错误,但是当我打印出数组时,我打印出了我认为是引用的内容:

 ARRAY(0x508a24)ARRAY(0x508b44)

其他信息:

我宣布这样的矩阵:

my @matrix = ( 
 [0, 1], 
 [2, 3] 
 ); 

并使用双人打印出来。

1 个答案:

答案 0 :(得分:4)

您只能将数组引用传递给函数

sub matrix_add {
  my ($matrix1, $matrix2) = @_;

稍后在函数中使用@$matrix1@$matrix2