我有一个文件,我想从中读取数据。这是一个数据样本:
NODELOAD 28 27132 3.29108E+04 7.94536E+04 0.00000E+00
NODELOAD 29 27083 9.89950E+04 9.89950E+04 0.00000E+00
NODELOAD 29 27132 6.08112E+04 6.08112E+04 0.00000E+00
NODELOAD 30 27083 1.29343E+05 5.35757E+04 0.00000E+00
NODELOAD 30 27132 7.94536E+04 3.29108E+04 0.00000E+00
NODELOAD 31 68 4.80185E+04 -5.47647E+04 -1.17033E+04
-1.27646E+03 1.18350E+04 -2.03885E+03
NODELOAD 31 1114 1.20706E+05 -3.31323E+04 -7.17280E+04
2.28198E+03 2.75582E+04 5.74460E+02
我有这段代码,并且能够读取一行的所有值并将它们保存到一个数组中:
foreach my $line (@input) {
if($line =~ /^\s*NODELOAD\s+/i) {
$line =~ s/^\s*//;
@a = split(/\s+/,$line);
$modelData{"NODELOAD"}->{$a[1]}->{$a[2]}->{"Fx"} = $a[3];
$modelData{"NODELOAD"}->{$a[1]}->{$a[2]}->{"Fy"} = $a[4];
$modelData{"NODELOAD"}->{$a[1]}->{$a[2]}->{"Fz"} = $a[5];
但是,文件中有一些“NODELOAD”定义在两行上定义,并且有 6 个加载值而不是 3 个(每行的前两个数字是标识符,后面的 3/6 是数据)。
if
如果以下行不以“NODELOAD”开头并且包含数字,那么编写一个语句是否最容易保存数据?文本文件中此部分之后的最后一行将不包含任何数字,但可能为空白或包含文本。