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 この 3 つの要素が必要でした。ファイルによっては、最後の行が 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" requires explicit package name at new.plx ~~ コンパイル エラーのため、new.plx の実行が中止されました。
上はアドバイスをまとめただけですが… 次のifで始まる行から、修正されるかもしれません。

誰でも私を助けることができますか?.. 私は絶望的です...

4

0 に答える 0