while(<DATA>)
{
chomp#去掉回车
@m=split#以空格分隔
if(exists $data{$m[0]})#如果已经炊ㄒ?
{
for(1..$#m){
if($data{$m[0]}->[$_-1] ne $m[$_]){#已定义判断后续变量是否存在不存在则添加
$data{$m[0]}->[$_-1] .= "/$m[$_]"
}
}
}
else#未定义直接添加
{
$data{$m[0]}=[@m[1..$#m]]
}
}
for(keys %data)
{
print "$_ @{$data{$_}}\n"
}
__DATA__
a b1 2 3
a b 2 2 5
open(FILE1,"E:/test1.txt")
open(FILE2,"E:/test2.txt")
open(FILE3,"+>","E:/test3.txt")
@array=<FILE1>如果test2里面只是一行一个号码的话这样是可以的
for $i(0..$#array)#如果不是的话要进行信息的提取
{
$m=chomp($array[$_])
@v=split(" ",$m)
$hash{$v[??]}=$i
}
while(<FILE2>)
{@v=split
($name,$address,$number,$another)=@v
if(exists $hash{$name})#可能你是这个意思吧将两个记录信息都添加到文件中
{
print FILE3 "@v \n$array[$hash[$name]]\n"
}
}
#!usr/bin/perlopen A, "<A.txt" or die ""
open B, "<B.txt" or die ""
open C, ">C.txt" or die ""
my %a
while(<A>){
chomp($_)#去掉回车
my @aArr = split
$a{$aArr[0]} = $_
}
while(<B>){
chomp($_)#去掉回车
my @bArr = split
if(exists $a{$bArr[0]}){
print C $a{$bArr[0]}." ".$bArr[1]
}
}
close A
close B
close C
system(pause)
其中A.txt为第一个文件,B.txt为第二个文件,C.txt为最终生成的,也是所要文件。
不知是否符合楼主要求。
这是对一个内存有行星名称星座亮度等内容的文件进行编辑的程序。第一段是用来查询一些名称对应亮度的。第二段是统计同一星座星数的,可以比较容易改成调用子程序的。第三段是对文件编辑后存入文件。不知道合不合要求
#!/usr/bin/perl -w
use strict
open F, "star25.txt" or die "Can't open file"
my @lines = <F>
close F
chomp @lines
s/#.*// foreach @lines
my (%sname, %spectrum, @fields)
foreach (grep !/^$/, @lines) {
@fields = split /:/, $_
next if @fields <6
$sname{$fields[0]} = $fields[1]
$spectrum{$fields[0]} = $fields[5]
}
print exists $sname{$_} ?
"$_: Scientific name is $sname{$_}, Spectrum is $spectrum{$_}\n" :
"$_: Not find!\n"
foreach ('Pole star', 'Castor', 'Altair', 'Hadar')
###################
my $c
foreach $c ('Ori', 'Cen', 'Cru') {
print "Number of starts in $c is ",
scalar(grep {$_ eq $c} map ((split / /, $_)[1], values %sname)),
"\n"
}
###################
my %Nspec
$Nspec{substr $_, 0, 1}++ foreach values %spectrum
open F, ">OBAFGKM.txt" or die "Can't open file for write."
print F "$_:$Nspec{$_}\n" foreach keys %Nspec
close F
1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)