Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5361738
  • 博文数量: 1144
  • 博客积分: 11974
  • 博客等级: 上将
  • 技术积分: 12312
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-13 20:06
文章存档

2017年(2)

2016年(14)

2015年(10)

2014年(28)

2013年(23)

2012年(29)

2011年(53)

2010年(86)

2009年(83)

2008年(43)

2007年(153)

2006年(575)

2005年(45)

分类:

2008-10-02 08:48:31

$info= "ASC.txt"
open(INFO, $info) || die "Cannot open file: ".$infile."\n";
$sline=;
while ($sline= )
{
         
         chomp;
         @allinfo=split(/,/,$sline);
         
         %s_all = (
              @allinfo[0] =>@allinfo[1]);
  
         
        }       

print %s_all;
  ASC文件是以,进行分割文件,我的目的想建立第一列和第二列关联,以第一列为key,然后
打开第二文件,以刚才key作为来计算。
问题是:在循环体外面打印hash数组时,只显示最后一行,
请教如何处理?
谢谢!
 
 
ASC.txt 文件是这样的

FA,13
FB,25
FC,37
FD,48
FE,59
FF,67
FG,88

目标文件
w1,FA,1
w2,FB,2
w3,FC,3
w4,FD,4
w5,FE,5
w6,FF,6
w7,FG,7

要求结果是:
w1,FA,14
w2,FB,27

....
就是2列相加。

谢谢!

open(FF,"1.txt");
my @array = ;
close(FF);

my %h=();
for(@array){
        chomp;
        my @tmp = split(/,/);
        $h{$tmp[0]}=$tmp[1];
}

my @data=();
open(FF,"2.txt");
while(){
        chomp;
        my @line = split(/,/);
        $line[2] += $h{$line[1]};
        push @data,join(",",@line);
}
close(FF);

for(@data){
        print $_,"\n";
}
 
 
%s_all = (
              @allinfo[0] =>@allinfo[1]);
  
這里出問題, 改成
    $s_all{ $allinfo[0] } = $allinfo[1];

試試看...

還有就是,  養成加下面兩行的習慣吧, debug時省很多工.

use strict;
use warnings;
阅读(1781) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~