2013-07-09 40 views
2

我正在使用while循環將實數從輸入文件分配到數組。輸入文件的設置方式使數組中的前21個點變爲空白。數21對應於包含短語「範圍1」在我的輸入文件減1的行號我使用如何找到perl中某個短語的行號?

splice @range_min, 0, $header_lines-1; 

以除去從我的數組那些空行。

我希望$ header_lines等於包含該短語的行號,因爲我可能有其他輸入文件與該短語在不同的行上。

我已經試圖把下面的命令進入我的while循環:

$header_lines = $., last if /Range1/; 

它的工作,但它完全脫離我的數組(擊敗我的計劃的目的)。

有沒有更好的方法來找到我的短語在輸入文件中的行號,而不影響我的while循環或數組?

回答

2

嘗試把這個在你的循環,而不是:

if (/Range1/) { 
     $header_lines = $.; 
    } 

我認爲什麼是目前發生的事情是通過循環,每次,你設置$ header_lines到當前行號($)。代碼「last if/Range1 /;」 $ _與Range1匹配時退出循環。所以你只能設置前21行,然後退出,然後擦除所有行。

+0

完美的工作!謝謝。我認爲你的解釋也完全正確。 –

相關問題