如何在 Perl 中从多个数组创建散列

How to Create a Hash from Multiple Arrays in Perl

我有一个从 Ansys 导出的文本文件,其中包含四列(NodeNumber、Xcoordinate、Ycoordinate 和 Zcoordinate)。我想获取此文本文件的内容并在 perl 中创建一个散列 table。我可以通过正则表达式为列中的每个值创建一个数组,但我的问题是如何获取这些数组并将它们放入散列 table 中?我最终想要一个包含 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,);
        push(@xCoord,);
        push(@yCoord,);
        push(@zCoord,);
    }

}

exit(0);

如何将上面的四个数组(@NodeNumber、@xCoord、@yCoord、@zCoord)放入table? NodeNumber 值是唯一的,因此应将其用作主键。

I ultimately want a list of all the node numbers with condition where Ycoordinate == 0 and Zcoordinate == 0.

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;
}