導航:首頁 > 文件教程 > perl讀取巨大文件

perl讀取巨大文件

發布時間:2021-11-25 19:18:42

① 如何用perl讀取txt文件中的數據

#!/usr/bin/perl
$textname="/存放路徑/文件名.txt"; #例如$textname="E:/lqf.txt";
open(FILE1,$textname);#打開文件
@line=<FILE1>;#將文件的每一行讀取到數組@line中,文件的每一行作為一個數組元素
close FILE1;
#保存這個文件的內容,只要對@line數組進行操作就可以了

② perl 讀入多個文件進行操作

下面是我自己一直用的框架:
第一句和第二句是加一些限制,讓它在語法可能有問題的時候報warning。

第三句是把要讀的文件的全文件名(包括後綴)存到@ARGV裡面。
第四句是@ARGV作品為main這個subroutine的輸入變數。
while的那個循環是把@ARGV裡面所有文件的每一行從<>裡面讀到默認的$_裡面(每次讀一行),其中<>自動和@ARGV裡面的文件的內容發生關系。然後print就是把每次讀到的存在$_的那一行列印出來。

use strict;

use warnings;
@ARGV = qw# input_file1.txt input_file2.txt #;

main(@ARGV);
sub main
{
while(<>)

{
print;
}
}

③ perl 讀取文件夾下所有txt,並處理數據

還是昨天的那個程序,假設你的文件分為 1.txt 2.txt 3.txt,這個時候不要包含文件頭,即所有的文件都是內容


程序修改為:

#$head=<>;

while(<>)
{
@line=split(/,/,$_);
$lwfs=$line[7];
$user=join('|',$line[1],$line[2],$line[3],$line[4],$line[6],$line[7]);
$info{$lwfs}{'times'}+=1;
$info{$lwfs}{'users'}{$user}+=1;
}

print"lwsf,user,times ";
foreachmy$key(keys%info)
{
$times=$info{$key}{'times'};
@users=keys$info{$key}{'users'};
$usercount=$#users+1;
print"$key,$usercount,$times ";
}

注意:讀取文件頭到$head變數的那句已經注釋掉了。


此時運行方法為: perl my.pl 1.txt 2.txt 3.txt 就可以了


perl自己會把所有文件內容都讀進來處理的

④ 高分求Perl寫:讀取文件,按要求輸入到新生成的文件里.

請詳細描述一下你的問題吧。你是指A文件中,的格式是第一個,然後轉換成B文件的格式是下面那樣子嗎?
還是A文件是配置,需要讀取到某些變數裡面?又或者其他意思?最好是能舉證一個例子,運行前後的。

⑤ 如何用perl循環讀取多個文本文件,並進行數據處理

formy$f(@files){
open(my$H,$f);
process($H);
close$H;
}
subprocess{
my$H=shift;
while(<$H>){.......}
}

⑥ 如何用perl讀取一個文件夾下的大量首列相同的txt文件,要進行列合並。

opendirD,"1"ordie$!;#把所有txt文件都放到一個叫1的文件夾中
@array=grep(/.txt/,readdirD);
foreach$list(@array){
openF,"1/$list"ordie$!;
@load=<F>;
foreach(@load){($s1,$s2)=split/s+/,$_;push@new,$s2;}
}
foreach(@new){print"$_ ";}

⑦ 如何在 Perl 中獲取圖象文件的尺寸和文件大小

獲取文件大小不需要安裝額外的模塊,用-s操作符即可:
假設文件路徑在變數$file_path中,那麼$file_size文件大小可以用如下語句獲得:
$file_size = -s $file_path;
得到的結果單位為Byte(位元組),如果要換算成KB,則將結果除1024,如果要換算成MB,則再除1024,以此類推。
要獲取圖片的尺寸,可以用模塊 Image::Size
use Image::Size;
my ($globe_x, $globe_y) = imgsize($file_path);

⑧ perl 讀取大容量的文件的前兩行,程序該怎麼寫

open(FD,$ARGV[0]);
my(@c,$g,$e,$l);#count,greater,equal,less
my($s,$n,$i);
$i=1;
while($s=<FD>){
$s=~s/[^a]//g;
$n=length($s);
$c[$i]=$n;
$g++ if ($n>5);
$e++ if ($n==5);
$l++ if ($n<5);
$i++;
}
close(FD);
$n=$g+$e+$l;
print "a>5 $g ".($g*100/$n)."%\n";
print "a=5 $e ".($e*100/$n)."%\n";
print "a<5 $l ".($l*100/$n)."%\n";

上面的程序測試通過,完全滿足你的要求,結果是內正確容的。

⑨ 如何提高perl處理大文件的效率

1)處理文本文件,一般是逐行讀入,在這樣的循環里,絕不要使用外部shell命令,例如,假如要將分析內容寫往其他文件,那麼該老老實實的使用perl
自己的寫文件句柄的方式,而不要使用shell的"echo $_ >;file"之類的命令,後者比前者慢10000倍。

2)在匹配正則表達式時,如果匹配里含有"&"字元,那麼記得在前面加個"\"轉義,否則perl會把匹配的內容復制一份以供以後參考,這導致程序其慢無比;

3)在匹配正則表達式時,盡量不要使用i選項(區分大小寫),請將不區分大小寫的區域盡量縮小,例如/ID=something\&/i,如果只
對ID不分大小寫的話,那麼應該這么寫:/[Ii][Dd]=something\&/,後者比前者快不止100倍;

4)在匹配正則表達式時,如果匹配項是固定不變的,那麼請使用o選項,這表示只對正則表達式編譯一次,例如/jsp/io比/jsp/i好很多。

5)while循環要比for/foreach循環效率高,

6)多用小括弧,少用$&,$`,$'

7)多餘多行匹配推薦用s/m修飾符,不推薦使用$*

⑩ 關於perl 讀取文件的疑惑:

open(FILE,"+<a.xml");
while(<FILE>){
chomp;
s/<\/Database>/<\/user>/g;
print $_."\n";
}
close(FILE);
看看這樣,也該行。 xml操作,為什麼不用模塊呢? 這樣單行處理,可能會誤操作替換阿。

閱讀全文

與perl讀取巨大文件相關的資料

熱點內容
如何看發放中視頻的數據 瀏覽:175
醫療數據是什麼 瀏覽:885
旅遊找什麼網站好 瀏覽:391
java猜數字游戲實訓總結 瀏覽:27
怎麼加入新華網的學習網站 瀏覽:26
反恐行動升級包 瀏覽:180
隱藏在電腦桌面的文件怎麼顯示 瀏覽:313
一鍵還原文件被刪除如何恢復 瀏覽:503
安卓dex文件修改 瀏覽:392
插入的pdf文件怎麼更改圖標 瀏覽:228
金華網站怎麼製作動態照片 瀏覽:704
javaparcelable 瀏覽:499
酷安app下載文件在哪裡找 瀏覽:913
微信可以發給自己文件嗎 瀏覽:449
哪個視頻網站被約談了 瀏覽:74
在vb連接mysql資料庫 瀏覽:992
一起作業家長通安卓版 瀏覽:327
nero文件名長度 瀏覽:714
word數學公式編號模板 瀏覽:588
jscriptnet 瀏覽:685

友情鏈接