急求!!如何用perl读取一个文件夹下的大量首列相同的txt文件,要进行合并

急求!!如何用perl读取一个文件夹下的大量首列相同的txt文件,要进行合并,第1张

use Tie::File;

my %d=();

for ( `dir /B /S txt` ) {

    chomp;

    tie my @a, 'Tie::File', $_ or die;

    for(@a) { my($n,$s) = split; push @{$d{$n}}, $s; }

    untie @a;

}

print join("\t", $_ , @{$d{$_}}),"\n" for sort keys %d

把上面的代码存为xxxpl文件 ,

命令行上执行:

perl xxxpl > outtxt

文件outtxt就是你要的结果

一个 txt 文件里是只有这样的一行 还是有很多 define_sub 这样的行

一个 txt 文件里, 是不是全都是 define_sub 这样的格式 有没有其他文字, 如注释之类的

"该目录" 是甚麼意思 您那些 A B C 是不是代表任意的路径 如果是, 那那些径是用绝对路径还是相对路径

那您即是想得到甚麼结果 hash array 打印到屏幕

打开管道文件

Linux提供了管道机制,可以方便应用程序之间的数据传递。在Perl中,扣开和使用管道可采用如下形式的open函数:

open(Filehandle,”丨

CMD”);

其中,CMD为数据接收方应用程序。比如,可以用管道的方式,向邮件程序发送信息,然后邮件程序会把收到的信息作为邮件发送出去,示例如下:

open(

OutFile,”丨

mail

sb@mailcom”):

prini

(OUtFile,

"Pipe

send

mail

exampel\n”);

close

(OutFiile);

命令行参数

在Perl中提供了存储命令行参数的数组@ARGV,可以用来分别处理各个命令行参数,但是与C语言不同的是,$argv[0]是第一个参数,而不是程序名本身。通过下面的方法司以对命令行参数进行访问和处理:

$var=$argv[O];

$num=

@argv;

上面的第一条语句取得第一个命令行参数,第二条语句取得参数的个数。还可以使用数组函数shift,比如shift(@argv)将把数组@argv

的最前面的元素移出来。

#!c:/Perl/bin/perlexe

print "Content-type: text/html\n\n";

open(destfile,"c:/menulst");

while(<destfile>)

{

$n=$n+1;

}

$N=int(rand($n));

close(destfile);

print "<html><h1>总行数$n行 <br>随机取$N行</h1></html>\n";

#读取文件行数n,设定$N<$n,随机取小于n的整数N

open(destfile,"c:/menulst");

while(<destfile>)

{

$c=$c+1;

print $_ if ($c==$N);

}

close(destfile);

windows下随便写的,版本perl 5101

use Tk;

use Encode;

$name0="这个程序用于计算文件中每个不同字母的出现次数";

$name0=decode("cp936",$name0);

$name1="选择文件";

$name1=decode("cp936",$name1);

my $file;

my $mw = MainWindow->new();

$m1 = $mw->Frame(-background=>'green3')->pack(-side => 'bottom',-fill=>'both');

$m2 = $m1->Frame(-background=>'green3')->pack(-side => 'bottom',-fill=>'both');

$m1->Label(-text => $name0,-background=>'lightblue1',-foreground=>'black',-font => [-size =>

15])->pack(-side => 'left',-padx => 0);

$m2->Button(-text => $name1, -background=>'green3',-command => sub {&main},-font => [-size => 18])->pack(-side =>

'left',-padx => 0);

MainLoop;

#上面是界面

sub main{

$file=$mw->getOpenFile(-initialdir => "d:/");#选择文件

if(defined $file){#有选择文件的时候

open IN, "$file";#打开文件

while(<IN>){

if($_ =~/\w+/){

$first = lc(substr ($_, 0, 1)); #每行第一个字母并转为小写

my @num = $_=~/$first/ig;#匹配全部并不分大小写

my $num = $#num + 1;

#print"$first $num\n";

push(@txt,"$first $num");

}

}

close IN;

$txt = join("\n",@txt);#把数组合并成字符串

$mw -> messageBox(-type=>"ok", -message=>"$txt",-icon=>'question');#显示结果

}

exit;

}

>

以上就是关于急求!!如何用perl读取一个文件夹下的大量首列相同的txt文件,要进行合并全部的内容,包括:急求!!如何用perl读取一个文件夹下的大量首列相同的txt文件,要进行合并、perl如何返回当前 *** 作文件的当前读取行数、Perl中命令行参数以及打开管道文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10148954.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存