
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,”丨
sb@mailcom”):
prini
(OUtFile,
"Pipe
send
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中命令行参数以及打开管道文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)