#######################################################################
# Copyright (C) 2015 All rights reserved.
#
# 文件名称:p.pl
# 创 建 者:
# 创建日期:2015年05月11日
# 描 述:
#
# 备 注:
#
######################################################################### use strict;
use warnings;
use Time::HiRes;
# please add your code here!
my $tmStarted=Time::HiRes::time;
if ( != scalar @ARGV)
{
&PrintUsage();
exit ;
}
=pod
Subroutine(s);
=cut
sub PrintUsage
{
print STDERR "perl program.pl [IN] ref_file [IN] input_file [OUT] output_file\n";
}
my $line = "";
my $linecount = ;
my %hash = ();
open FIN, "<$ARGV[0]" or die "can not open inputfile:$!\n";
open FOUT, ">$ARGV[1]" or die "can not create outputfile :$!\n";
while(defined($line=<FIN>))
{
chomp $line;
my @vec = split /\t/, $line;
my $size = scalar @vec;
if ($size < )
{
print STDERR "$line\n";
}
if (not defined($hash{$vec[]}))
{
my @vectemp = ();
push @vectemp, $vec[];
$hash{$vec[]} = \@vectemp;
}
else
{
push @{$hash{$vec[]}}, $vec[];
} }
close FIN;
foreach my $key (keys%hash)
{
my @vec2 = @{$hash{$key}};
my $size = scalar @vec2;
my $part = "";
for (my $i = ; $i <$size; $i++)
{
$part.=$vec2[$i];
if ($i < $size - )
{
$part.=",";
}
}
print FOUT "$key\t$part\n";
}
close FOUT;
print STDERR "$0 has finished,congratulations!\n";
print STDERR "Time elapsed:".(Time::HiRes::time-$tmStarted)."\n";

数组作为hash元素的时候如何push的更多相关文章

  1. 数组中的元素 增加push用法 unshift() 方法 和减少pop() 方法 shift() 和其他位置增删 splice() 方法 join() 方法 reverse() 方法 sort() 方法

    push用法 push 英 [pʊʃ] 美 [pʊʃ] vt. 推,推动; vt. 按; 推动,增加; 对…施加压力,逼迫; 说服; n. 推,决心; 大规模攻势; 矢志的追求 定义和用法 push( ...

  2. Perl数组和hash相关函数

    Perl数组和hash相关函数 内置的数组函数有: each, keys, pop, push, shift, splice, unshift, values 内置的hash函数有: delete, ...

  3. Perl匿名数组、hash和autovivification特性

    可有构建匿名的对象,这样就没必要去为只用一两次的数组.hash去取名字,有时候取名是很烦的事. 使用中括号[]构建匿名数组 使用大括号{}构建匿名hash 不包含任何元素的[]和{}分别是匿名空数组. ...

  4. [Perl] 删除数组中重复元素

    写一个小程序时候,需要去除一个数组中的重复元素,搜索了一下,找到的代码主要是两种,一种是使用grep函数,一种是转换为hash表,代码分别如下: 使用grep函数代码片段:代码: my @array ...

  5. perl 引用(数组和hash引用) --- perlreftut - Mark 的一个简单的'引用'教程 ---Understand References Today. --Mark Jason Dominus, Plover Systems (mjd-perl-ref+@plover.com)

    https://blog.csdn.net/fangwei1235/article/details/8570886 首页 博客 学院 下载 论坛 APP 问答 商城 活动 VIP会员 招聘 ITeye ...

  6. 6.数组和Hash表

    当显示多条结果时,存储在变量中非常智能,变量类型会自动转换为一个数组. 在下面的例子中,使用GetType()可以看到$a变量已经不是我们常见的string或int类型,而是Object类型,使用-i ...

  7. 为什么for不能有序遍历数组的所有元素?(Array的设计原理)

    这个题目略微浅显,但却不易讲明白.如果我告诉你,我们不能以任何代码保证可以有序遍历出一个数组的所有元素,你肯定会反驳我,因为使用for明明就可以啊!但其实不是. 一.为什么FOR不能保证遍历所有? 代 ...

  8. 数组和Hash表

    数组和Hash表 当显示多条结果时,存储在变量中非常智能,变量类型会自动转换为一个数组. 在下面的例子中,使用GetType()可以看到$a变量已经不是我们常见的string或int类型,而是Obje ...

  9. js向一个数组中插入元素的几个方法-性能比较

    向一个数组中插入元素是平时很常见的一件事情.你可以使用push在数组尾部插入元素,可以用unshift在数组头部插入元素,也可以用splice在数组中间插入元素. 但是这些已知的方法,并不意味着没有更 ...

随机推荐

  1. Struts BaseAction工具类,封装Session,Request,Application,ModelDriven

    package com.ssh.shop.action; import java.io.InputStream; import java.lang.reflect.ParameterizedType; ...

  2. Python基础学习笔记(三)运算符

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-chinese-encoding.html 3. http://w ...

  3. android测试参考,及CreateProcess failure, error问题解决

    今天小伙伴问我问题,我给了这2个小命令,或许做android测试的同学可以用得着. 截图命令adb shell /system/bin/screencap -p /sdcard/screenshot. ...

  4. java中类名.class、实例.getclass()区别

    import java.util.HashSet; import java.util.Iterator; /** * Created by GOD on 2016/1/23. * Class对象的生成 ...

  5. iOS - Notification 通知

    1.Notification 通知中心实际上是在程序内部提供了消息广播的一种机制,它允许我们在低程度耦合的情况下,满足控制器与一个任意的对象进行通信的目的.每一个 iOS 程序(即每一个进程)都有一个 ...

  6. springmvc企业级开发实战

    一.用eclipse插件搭建项目 二.pom文件 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi ...

  7. 图片的copy,从一个目录复制到另一个目录

    代码: public function index(){ $path='G:/相片/2014.9.8深圳莲花山/IMG_1282.JPG'; $path=iconv('utf-8','gb2312', ...

  8. maven的聚合与继承5

    一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 1 <modules> 2 <module>模块一</module&g ...

  9. (四)linux常用命令

    1.在vim下要查找特定的字符串可按Esc键,然后按/字符串,如/DFGE 2.在vim下要显示行数:set nu

  10. Linux进程空间分布 & 进程控制块 PCB

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Verdana; color: #555555 } span.s1 { } Linux使用两级 ...