Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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
Perl $array can';不要打印任何东西_Perl_Multidimensional Array - Fatal编程技术网

Perl $array can';不要打印任何东西

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, [

这是我的程序,我想让用户逐行输入矩阵并打印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, [ @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
    ,请使用need
    sprintf
    。请阅读

  • 首先,请使用
    使用严格;使用警告;

    代码中的问题:

  • 您有一个一维数组,但您的 它就像二维数组。为了使二维数组成为二维数组,将
    @P\u matrix
    中的
    行数组
    的数组引用推为
    [@Row\u array]
  • $d
    在哪里定义?如果您的意思是将
    $d
    声明为标量变量,则将
    $d
    声明为
    my$d
    our$d
    要使用
    %d
    ,请使用need
    sprintf
    。请阅读

  • 我有点困惑,%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]}
    之前,必须先取消对它的引用。但无论如何,在比较中不需要
    标量