2013-03-15 89 views
1

我在Perl中只是初學者,寫了一小段代碼。添加\ n後,我得到下面的錯誤。請在下面找到表格格式。我試圖在index.I後,從temp.txt中取出(2和3列) 。我正在嘗試ingnore的前兩行。在串聯(。)或字符串中使用未初始化的值

正如我所說,我有錯誤,當我添加\ 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> 
+1

你的'data'列表可能沒有得到你認爲它來自'split'的全部內容。 – squiguy 2013-03-15 07:04:50

回答

2

後拆分做:如果 (標量(@data)== 4){

那麼你的打碼

}

因爲你不知道,如果$數據[3 ]或$ data [2]存在。

0

你需要給我們完整的錯誤。您應該編輯問題,然後剪切並粘貼確切的錯誤,包括行號。然後,告訴我們該文件中的哪一行。

很可能在該文件中的一些數據中少於4個字段。因此,split會將3個或更少的標量返回到@data。然後,當你嘗試引用$ data [3]時,這是一個未初始化的值。

相關問題