导航:首页 > 文件教程 > 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读取巨大文件相关的资料

热点内容
怎么休改文件名 浏览:989
cdr导出图片不显示文件名 浏览:761
pcdmis如何离线编程 浏览:201
微信推文插入文件 浏览:844
生产文件柜图片 浏览:244
如何设置微信数据增加 浏览:95
excel文件不再增大 浏览:613
ug编程刀路怎么复制不用鼠标选取 浏览:97
excel文件打开扩展名错误 浏览:10
阿里巴巴怎么做数据包 浏览:442
无线网络连接一直显示未连接 浏览:25
windows7如何自动激活工具下载 浏览:57
天语救砖工具 浏览:839
网络体育课程有哪些 浏览:19
苹果微信怎么查看文件 浏览:165
安卓nba2k14面补替换 浏览:450
路由器密码定时换 浏览:626
aicc恢复文件在哪里 浏览:167
怎么查无线网络属性 浏览:874
只狼的声音文件放在哪里 浏览:219

友情链接