如何在Perl中从多个数组创建哈希

如何在Perl中从多个数组创建哈希,perl,hashtable,Perl,Hashtable,我有一个从Ansys导出的文本文件,其中包含四列(NodeNumber、Xcoordinate、yccoordinate和Zcoordinate)。我想获取这个文本文件的内容,并用perl创建一个哈希表。我可以通过正则表达式为列中的每个值创建一个数组,但我的问题是如何获取这些数组并将它们放入哈希表中?我最终想要一个所有节点号的列表,条件是Ycoordinate==0和Zcoordinate==0 下面是我的代码: #!/usr/bin/perl -w use strict; use Cwd;

我有一个从Ansys导出的文本文件,其中包含四列(NodeNumber、Xcoordinate、yccoordinate和Zcoordinate)。我想获取这个文本文件的内容,并用perl创建一个哈希表。我可以通过正则表达式为列中的每个值创建一个数组,但我的问题是如何获取这些数组并将它们放入哈希表中?我最终想要一个所有节点号的列表,条件是Ycoordinate==0和Zcoordinate==0

下面是我的代码:

#!/usr/bin/perl -w
use strict;
use Cwd;

use lib "C:/begperl";
use BeginPerlBioinfo;

open (MYINPUTFILE, "<xyzNodeCoords.lis");

my @XYZcoordData = <MYINPUTFILE>;
my @NodeNumber;
my @xCoord;
my @yCoord;
my @zCoord;


foreach (@XYZcoordData)
{
    if($_ =~ m/^\s+(\d+)\s+(\S+)\s+(\S+)\s+(\S+)/i)
    {
        push(@NodeNumber,$1);
        push(@xCoord,$2);
        push(@yCoord,$3);
        push(@zCoord,$4);
    }

}

exit(0);
#/usr/bin/perl-w
严格使用;
使用化学武器;
使用lib“C:/begperl”;
使用BeginPerlBioinfo;
打开(MYINPUTFILE,“
我最终想要一个所有节点号的列表,条件是Ycoordinate==0和Zcoordinate==0

my$qfn='xyzNodeCoords.lis';

open(我的$fh,'你想要一个HoA吗?似乎AoH更合理。AoH代表哈希数组吗?我只想要一个表或矩阵来保存这些值。我不确定它在perl中的名称。然而,将这些表推到perl AoH中的语法是什么?没有“表”或“矩阵”这样的东西"在Perl中,只有数组和散列。我的问题是,我们不知道您想要什么。在将数据存储到数据结构中之后,您想对数据做什么?这对于提供有关使用什么数据结构以及如何将其放入的建议很重要。散列的键是什么?您计划如何访问散列?如果您不知道k是什么,那么是的,那么你就不能用散列了。
my $qfn = 'xyzNodeCoords.lis';

open(my $fh, '<', $qfn)
   or die("Can't open \"$qfn\": $!\n");

my @list;
while (<$fh>) {
   s/^\s+//;
   my ($node, $x, $y, $z) = split;
   push @list, $node if $y == 0 && $z == 0;
}