0
Bini  --  -10.09014  

cidi

Bini  --  -21.89753  -21.47853  -20.27835  -20.34952  -17.23454

Bini  --  -16.89753  -12.47853  -11.27835  -11.34952  -10.23454

Bini  --  -09.09014  

light is 3.4

我的文件有一个如上所示的数组。我想尝试的是从最后 2 行中提取最后 3 个元素。所以,-12.34952 -11.23454 -10.09014 这三个元素是我想要的。有时,最后一行可能以 1 到 5 个元素结束,具体取决于文件。但在这里,它只有最后一行的 1 个元素。所以我想要的格式如下。

名称 H1 H2 H3 H4

文件名 -09.09014 -10.23454 -11.34952

H4 将是我想从打开的文件中提取的其他元素。以下是我所做的..实际上,从推送中,我迷路了。连我都不知道是什么意思……当你发表评论的时候,即使是简短的建议也很好。

块引用

use warnings;
use strict;
use File::stat;
open (OUT, ">", "result\.txt") or die "cannot open file\,\n";
printf OUT "      code     H1     H2     H3     H4[A\.U\.]\n";

foreach my $answer (glob "*.log") {        

open (FILE, "<", "$answer") or die "Cannot open file\.\n";               

my @file = split ('\.', $answer);
my $name = $file[0];  
my @entries;    # 

while(my $line = <FILE>) {
      next if $line !~ /Bini/;     # take H1 H2 H3   
      push @entries, grep /\d/, split /\s+/,$line;
}

elsif ($line =~ /light/) {              # take take H4
        @entries_h3 = split(/\s+/,$line);
 $element4 = $entries_h3[3];
}

else {
  next;
  }
 }
}

PRINT:
printf OUT "%10s %12.3f %12.3f %12.3f %12.3f,$name, $element1, $element2, $element3, $element4;
close (FILE);
}
close (OUT);          

块引用

大多数情况下,它显示如下错误消息:全局符号“@entries”需要在 new.plx 处显式的包名称 ~~ 由于编译错误,new.plx 的执行中止。
以上只是我从建议中结合...从下一个 if 开始的行,它可能会被纠正。

有人可以帮助我吗?.. 生无可恋...

4

0 回答 0