perl一次讀取多行文字的策略

2021-06-23 03:49:50 字數 1367 閱讀 6193

在處理文字時,常常遇到這樣的情況:就是我們需要把兩行文字做乙個比較,然後選擇性輸出。而在while()程式塊中預設只能一次讀取一行。筆者在這裡,舉乙個簡單的例子來說明怎麼處理這種情況。

有乙個這樣一段文字:

a 1 2 3 4

a 5 6 7 8

a 6 7 8 9

a 7 8 9 11

a 7 8 9 12

a 13 12 14 15

a 18 14 16 17

a 2 3 4 65

策略一:把輸入文字存放到陣列中,然後利用for迴圈,一次輸出兩行做判斷。

指令碼如下:

#! /usr/bin/perl -w

use strict;

chomp(my @a=);

my @out;

for(my $i=0;$i<$#a;$i++)

my %ha;

my @new=grep ++<1}@out;

print $_,"\n" for@new;

__data__

a 1 2 3 4

a 5 6 7 8

a 6 7 8 9

a 7 8 9 11

a 7 8 9 12

a 13 12 14 15

a 18 14 16 17

a 2 3 4 65

策略一思路比較簡單,但是如果輸入文字過大,比較消耗記憶體。當然使用tie::file模組又是另外一回事情了。

在這裡,筆者利用tell和seek函式,對控制代碼定位做一下調整,就可以在while迴圈中,實現一次輸出多行,一行多次輸出了,是不是很方便呢?

**如下:

#! /usr/bin/perl -w

use strict;

my @out;

while()

}seek(data,$pos,0);

}my %ha;

my @new=grep $ha++ < 1,@out;

print $_,"\n" for@new;

__data__

a 1 2 3 4

a 5 6 7 8

a 6 7 8 9

a 7 8 9 11

a 7 8 9 12

a 13 12 14 15

a 18 14 16 17

a 2 3 4 65

程式執行的結果如下:

a 5 6 7 8

a 6 7 8 9

a 7 8 9 11

a 7 8 9 12

a 18 14 16 17

a 2 3 4 65

__結束__

hadoop hadoop的一次讀取

一次hadoop的read getfilesystem public static filesystem getfilesystem throws exception configuration configuration基本就是乙個空物件。新增了2個配置檔案到資源列表。adddefaultreso...

Linux讀取一行文字的方法

第一種方法 1.網上流行的乙個方法 列印出每行的文字資訊。include include int main void if line free line exit exit success 2.我自己稍作修改,取得指定行數的文字資訊。include include int get file line...

Java一次讀取文字檔案所有內容

我們做文字處理的時候的最常用的就是讀寫檔案了,尤其是讀取檔案,不論是什麼檔案,我都傾向於一次性將文字的原始內容直接讀取到記憶體中再做處理,當然,這需要你有一台大記憶體的機器,記憶體不夠者 可以一次讀取少部分內容,分多次讀取。讀取檔案效率最快的方法就是一次全讀進來,很多人用readline 之類的方法...