1

私はperlの初心者で、小さなコードを書きます.\nを追加した後、以下のエラーが発生します.以下のテーブル形式を見つけてください.インデックスの後にtemp.txtから(2列と3列)を取得しようとしています.最初の 2 行を無視しようとしています。

前述したように、コードに \n を追加するとエラーが発生しました

Error : Use of uninitialized value in concatenation (.) or 
        string at temp.pl line 10, <$fh2> line 300.


#! /usr/bin/perl

use strict;
use warnings;

my @data;
open(my $fh2,'<',"temp.txt") or die "Could not open file";
while(my $line =<$fh2>){
     @data =split(/\s+/,$line);
    print  "$data[2]  $data[3]";
    print "\n";
}


      Table format is:
      $DATA1 SOURCE='XtA' VERSION='G-2014.06'
    .TITLE '%curve%'
     index            temp1             temp2          temp3          
                      alter#          
     1               -1.5750000e+00   -3.2053667e+00   -4.0000000e+01  
                       1.0000000e+00(temp4)  

     2               -1.5272727e+00   -2.9323414e+00   -4.0000000e+01  
                       1.0000000e+00  

     3               -1.4795454e+00   -2.6579232e+00   -4.0000000e+01  
                       1.0000000e+00  

    ....................................upto 99 


      temp1  temp2
      <val1>  <val2>
4

2 に答える 2

2

分割した後、次のようにします: if (scalar(@data)==4) {

次に、印刷コード

}

$data[3] または $data[2] が存在するかどうかわからないためです。

于 2013-03-15T10:20:13.797 に答える
0

あなたは私たちに完全なエラーを与える必要があります。質問を編集してから、行番号を含む正確なエラーを切り取って貼り付ける必要があります。次に、ファイルのどの行であるかを教えてください。

そのファイルの一部のデータには、4つ未満のフィールドがある可能性があります。したがって、分割は3つ以下のスカラーを@dataに返します。次に、$ data [3]を参照しようとすると、それは初期化されていない値です。

于 2013-03-15T05:49:48.757 に答える