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

热点内容
苹果电脑里任务栏在哪个文件夹 浏览:635
把一款手机app更改 浏览:277
iphone怎么打开备份文件怎么打开 浏览:774
旧版本微信怎么登陆 浏览:140
更新错误代码80244019 浏览:287
java应用定制工厂下载 浏览:656
三星gears3连接wifi 浏览:975
同步推苹果手机版 浏览:522
jmf量产工具 浏览:760
htc刷机后无网络服务 浏览:534
任务栏不显示无线网络 浏览:514
iphone4越狱后卡机 浏览:909
荣耀v9屏幕防水吗 浏览:975
中宣部大数据时代 浏览:115
苏州东信网络技术有限公地址 浏览:634
win10升级后启动缓慢 浏览:285
魅族mx5最好系统版本 浏览:330
linux驱动工程师需要学习心得 浏览:265
苹果6现在多少钱国行 浏览:753
欧洲大数据战略 浏览:879