Perl $array can';不要打印任何东西
这是我的程序,我想让用户逐行输入矩阵并打印while矩阵,但我看不到矩阵 用户将键入Perl $array can';不要打印任何东西,perl,multidimensional-array,Perl,Multidimensional Array,这是我的程序,我想让用户逐行输入矩阵并打印while矩阵,但我看不到矩阵 用户将键入 1 2 3 4 5 6 7 8 9 像这样 我想让它表现出来 1 2 3 4 5 6 7 8 9 Perl程序 $Num=3; 而($Num>0) { $Row=; $Row=chomp($Row); @行数组=拆分(“,$Row); 推送@P_矩阵,@Row_数组; @行数组=(); $Num=$Num-1; } 对于($i=0;$i要创建多维数组,必须使用引用。使用 push @P_matrix, [
1 2 3
4 5 6
7 8 9
像这样
我想让它表现出来
1 2 3
4 5 6
7 8 9
Perl程序
$Num=3;
而($Num>0)
{
$Row=;
$Row=chomp($Row);
@行数组=拆分(“,$Row);
推送@P_矩阵,@Row_数组;
@行数组=();
$Num=$Num-1;
}
对于($i=0;$i要创建多维数组,必须使用引用。使用
push @P_matrix, [ @Row_array ];
创建所需的结构
另外,chomp
不会返回修改后的字符串。只需使用
chomp $Row;
从$Row中删除换行符。此外,如果您在'
上拆分,则根本不需要chomp
printf
使用%
作为格式字符,而不是$
您可以使用Data::Dumper
检查复杂的数据结构。使用strict
和warnings
帮助您避免常见问题。下面是我编写程序的方法:
#!/usr/bin/perl
use warnings;
use strict;
use Data::Dumper;
my @p_matrix;
push @p_matrix , [ split ' ' ] while <>;
warn Dumper \@p_matrix;
for my $i (0 .. $#p_matrix)
{
for my $j (0 .. $#{ $p_matrix[$i] })
{
printf '%d ', $p_matrix[$i][$j];
}
print "\n";
}
!/usr/bin/perl
使用警告;
严格使用;
使用数据::转储程序;
我的@p_矩阵;
推送@p_矩阵,[拆分“”],同时;
警告转储程序\@p_矩阵;
对于我的$i(0..$#p#u矩阵)
{
对于我的$j(0..$#{$p_矩阵[$i]})
{
printf'%d',$p_矩阵[$i][$j];
}
打印“\n”;
}
要创建多维数组,必须使用引用。使用
push @P_matrix, [ @Row_array ];
创建所需的结构
另外,chomp
不会返回修改后的字符串。只需使用
chomp $Row;
从$Row中删除换行符。此外,如果您在'
上拆分,则根本不需要chomp
printf
使用%
作为格式字符,而不是$
您可以使用Data::Dumper
检查复杂的数据结构。使用strict
和warnings
帮助您避免常见问题。下面是我编写程序的方法:
#!/usr/bin/perl
use warnings;
use strict;
use Data::Dumper;
my @p_matrix;
push @p_matrix , [ split ' ' ] while <>;
warn Dumper \@p_matrix;
for my $i (0 .. $#p_matrix)
{
for my $j (0 .. $#{ $p_matrix[$i] })
{
printf '%d ', $p_matrix[$i][$j];
}
print "\n";
}
!/usr/bin/perl
使用警告;
严格使用;
使用数据::转储程序;
我的@p_矩阵;
推送@p_矩阵,[拆分“”],同时;
警告转储程序\@p_矩阵;
对于我的$i(0..$#p#u矩阵)
{
对于我的$j(0..$#{$p_矩阵[$i]})
{
printf'%d',$p_矩阵[$i][$j];
}
打印“\n”;
}
首先请使用使用严格;使用警告;
代码中的问题:
您有一个一维数组,但您的
它就像二维数组。为了使二维数组成为二维数组,将@P\u matrix
中的行数组
的数组引用推为[@Row\u array]
$d
在哪里定义?如果您的意思是将$d
声明为标量变量,则将$d
声明为my$d
或our$d
。
或
要使用%d
,请使用needsprintf
。请阅读
首先,请使用使用严格;使用警告;
代码中的问题:
您有一个一维数组,但您的
它就像二维数组。为了使二维数组成为二维数组,将@P\u matrix
中的行数组
的数组引用推为[@Row\u array]
$d
在哪里定义?如果您的意思是将$d
声明为标量变量,则将$d
声明为my$d
或our$d
。
或
要使用%d
,请使用needsprintf
。请阅读
我有点困惑,%d不是已经在perl中构建了吗,为什么要将$d声明为我的$d?我的错。编辑答案。我认为%d
作为散列@KrishnachandraSharma您可能是对的,他试图使用printf“%d”
。但是他没有使用警告,所以他没有得到“未初始化”的警告对不存在的$d
变量发出警告。他也没有使用严格命令,这可能会阻止整个问题的发生。我有点困惑,不是%d已经在perl中构建,为什么要将$d声明为我的$d?我的错。编辑答案。我想%d
作为散列@KrishnachandraSharma您可能是正确的,他正在尝试g使用printf“%d”
。但是他没有使用警告,所以他没有为不存在的$d
变量得到“未初始化”的警告。他也没有使用strict,这会阻止整个问题的发生。请问标量($p_矩阵[$I])有语法问题吗?当我替换${$p_矩阵[$I]}当然,它可以正确运行…标量($p_-matrix[$i])的正确语法是什么?@user2131116:$p_-matrix[$i]
不是数组,它是数组引用。在使用标量($p_-matrix[$i])之前,必须取消对它的引用
。但是比较中不需要标量(标量)
。请问标量($p_矩阵[$I])有语法问题吗?当我替换其中的$#{$p_矩阵[$I]}时,它可以正确运行…标量($p_矩阵[$I])的正确语法是什么?@user2131116:$p_矩阵[$I]
不是数组,它是数组引用。在使用标量
:标量{$p_矩阵[$i]}
之前,必须先取消对它的引用。但无论如何,在比较中不需要标量
。