Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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使用二维数组访问文件中的数据?_Perl_Perl Data Structures - Fatal编程技术网

如何使用Perl使用二维数组访问文件中的数据?

如何使用Perl使用二维数组访问文件中的数据?,perl,perl-data-structures,Perl,Perl Data Structures,我不熟悉Perl编码&我面临着一种情况。以下是问题陈述: 我有一个文件,其中包含一些矩阵形式的数据(仅数字),如 1 2 3 4 5 6 ....... 7 9 4 6 7 8 ....... ................... ................... 我有另一个文件,其中包含2行数据(一些坐标),如 这些是第一个文件中数据的坐标,我想从第一个文件中提取数据并粘贴到第二个文件的第三行,例如,在第一种情况下,我必须搜索第一个文件中第30行和第50列的元素并粘贴到第二个文件的第

我不熟悉Perl编码&我面临着一种情况。以下是问题陈述:

我有一个文件,其中包含一些矩阵形式的数据(仅数字),如

1 2 3 4 5 6 .......
7 9 4 6 7 8 .......
...................
...................
我有另一个文件,其中包含2行数据(一些坐标),如

这些是第一个文件中数据的坐标,我想从第一个文件中提取数据并粘贴到第二个文件的第三行,例如,在第一种情况下,我必须搜索第一个文件中第30行和第50列的元素并粘贴到第二个文件的第1行第3列。

这并不难

首先,您必须解析值矩阵。如果输入在文件句柄
$fh
中,则可以执行以下操作:

my @data;
while(<$fh>) {
  chomp;              # remove newline
  my @row = split;    # split the current line on whitespace
  push @data, \@row;  # put a reference to this row into @data.
}

务必
严格使用;使用警告位于每个脚本的顶部以捕获错误
say
需要perl 5.10或更高版本。

我想将第一个文件的内容放入一个二维数组,然后使用split从第二个文件获取数据,并使用该数据访问第一个数组中的特定元素。我曾经直接使用二维数组进行C编程,但在这里,我很难理解如何使用这个数组的语法,你在Perl中尝试了什么?thnx对于你的帮助,我将尝试一下,嘿,我在windows中尝试了这个小脚本#/usr/bin/perl使用严格;使用警告;打开(“FH”,“萨米尔根据<代码>严格< /COD> >,Perl要求您声明所有变量;这是一件好事。您可以用<代码>声明我的<代码>(与C中的代码>自动<代码>)类似:<代码>我@ f=;……我的@ x=拆分……/代码>。此外,考虑使用“词汇文件句柄”:<代码>打开我的$FH,
my @data;
while(<$fh>) {
  chomp;              # remove newline
  my @row = split;    # split the current line on whitespace
  push @data, \@row;  # put a reference to this row into @data.
}
my @data = map { chomp; [split] } <$fh>;
while (<$fh2>) {
  chomp;
  my ($x, $y) = split;
  say "at x=$x, y=$y there is $data[$y][$x]";
}