Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
2d数组:更改元素Perl_Perl_Multidimensional Array - Fatal编程技术网

2d数组:更改元素Perl

2d数组:更改元素Perl,perl,multidimensional-array,Perl,Multidimensional Array,我有一个Perl中的2d数组。我将数组传递给一个子例程,希望修改2d数组的所有元素,然后返回它并打印数组。我已经在下面附上了我的代码。我遇到的问题实际上是更改每个单独的元素并将数组传递给子例程 原始矩阵+代码 x y z CG -3.74900 -4.89100 -3.45400 OD1 -6.45900 -6.29100 -6.08000 OD2 -1.31600 -1.83300 -0.17600 sub translateMat

我有一个Perl中的2d数组。我将数组传递给一个子例程,希望修改2d数组的所有元素,然后返回它并打印数组。我已经在下面附上了我的代码。我遇到的问题实际上是更改每个单独的元素并将数组传递给子例程

原始矩阵+代码

       x            y       z
CG  -3.74900 -4.89100 -3.45400 
OD1 -6.45900 -6.29100 -6.08000 
OD2 -1.31600 -1.83300 -0.17600   

sub translateMatrixOperation
{
my (@translatematrix, $x, $y, $z) = @_;
print "PRINTING FIRST\n";
my $arrsize = scalar @translatematrix;
for(my $i = 0; $i <= $arrsize; $i++)
{
    for(my $j = 0; $j <= $arrsize; $j++)
    {
        if ($j == 0)
        {
            print "[$i][$j]:$translatematrix[$i][$j]\n";
            $_ = $_ - $x;
        }
        elsif ($j == 1)
        {
            print "[$i][$j]:$translatematrix[$i][$j]\n";
           $_ = $_ - $y;
        }
        elsif ($j == 2)
        {
            print "[$i][$j]:$translatematrix[$i][$j]\n";
            $_ = $_ - $z;
        }
    }
}
print "PRINTING\n";
for(my $i = 0; $i <= $arrsize; $i++)
{
    for(my $j = 0; $j <= $arrsize; $j++)
    {
        print "$translatematrix[$i][$j] ";
    }
    print "\n";
}
# return (\@translatematrix);
xyz
CG-3.74900-4.89100-3.45400
OD1-6.45900-6.29100-6.08000
OD2-1.31600-1.83300-0.17600
子平移三叉运算
{
my(@translatematrix,$x,$y,$z)=@;
打印“先打印\n”;
my$arrsize=scalar@translatematrix;
对于(我的$i=0;$i
没有意义,因为
@translatematrix
@
中提取所有元素,应该是:

my ($translatematrix, $x, $y, $z) = @_;
其中,
$translatematrix
是数组引用

        $_ = $_ - $x;
应该更像

$translatematrix->[$i][$j] -= $x;

此外,还应采用与
$y
$z
类似的逻辑。

关于样式,对于(我的$i=0;你考虑使用的$$?应该使矩阵运算很容易。这个技术起作用,但是它阻止我使用当前的计算长度的方法。我如何计算数组的长度?@ USER 2657 817,你可以改变参数顺序IE.<代码>我的($x,$y,$z,@ TrimeMatrix)=@,;/COD> >所以数组是最后一个数组。
$translatematrix->[$i][$j] -= $x;