行列乗算のスクリプトを作成しようとしています。これは単なる基本的なプログラムですが、次のエラーについては理解できません。
グローバル シンボル "@ref_mat1" には、multiplication.pl の 49 行目に明示的なパッケージ名が必要です。
グローバル シンボル "@ref_mat2" には、multiplication.pl の 49 行目に明示的なパッケージ名が必要です。
以下は私のスクリプトです:
#!/usr/bin/perl -w
use strict;
my @mat1=(
[2,3,4],
[1,2,3],
[3,4,5]
);
my @mat2=(
[2],
[3],
[4]
);
my ($i, $j, $k);
my $r_product=[];
$r_product= mat_multiplication(\@mat1,\@mat2);
sub mat_multiplication
{
my ($ref_mat1,$ref_mat2)=@_;
my($mat1_row,$mat1_col)=total_rows_column($ref_mat1);
my($mat2_row,$mat2_col)=total_rows_column($ref_mat2);
for($i=0;$i<$mat1_row;$i++)
{
for($j=0;$j<$mat2_col;$j++)
{
my $sum=0;
for($k=0;$k<$mat1_col;$k++)
{
$sum=$sum+$ref_mat1[$i][$k]*$ref_mat2[$k][$j];
}
$r_product->[$1][$j]=$sum;
}
}
return $r_product;
}
sub total_rows_column
{
my($r_mat) =@_;
my $num_row=@{$r_mat};
my $num_col=@{$r_mat->[0]};
return($num_row,$num_col);
}
この問題を検索したところ、1 つのリンクが見つかりました
「グローバル シンボルには明示的なパッケージ名が必要」の説明
しかし、まだ解決できていません。見て、どこで間違いを犯しているのか教えてください。
ありがとう