我有一个从Ansys导出的文本文件,其中包含四列(NodeNumber,Xcoordinate,Ycoordinate和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);
如何在上面使用四个数组(@NodeNumber,@ xCoord,@ yordord,@ zCoord)并将它们推入表中? NodeNumber值是唯一的,因此它应该用作主键。
答案 0 :(得分:0)
我最终想要一个所有节点号的列表,条件是Ycoordinate == 0和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;
}