in reply to Adding missing values into a hash
poj#!perl use strict; use Text::CSV; my %info=(); my $line_count=0; while (my $line = <DATA>){ chomp($line); if ($line =~ /##INFO=<ID=([^,]+)/){ $info{$1}=[]; } else { my (undef,%hash) = split /[\t;=]/,$line; for (keys %info){ push @{$info{$_}},$hash{$_} || 'NA'; } ++$line_count; } } my $csv = Text::CSV->new ( {binary=>1, eol=>"\012"} ) or die "Cannot use CSV: ".Text::CSV->error_diag(); open my $fh,'>','output.csv' or die "Could not open output.csv $!"; my @col_head = sort keys %info; $csv->print($fh, \@col_head); for my $i (1..$line_count){ my @row = map { $info{$_}[$i-1] } @col_head; $csv->print($fh, \@row); } __DATA__ ##INFO=<ID=AA, ##INFO=<ID=AB, ##INFO=<ID=AC, 1 AA=1;AB=2;AC=3 2 AA=2;AB=2 3 AA=5;AB=1;AC=1
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Adding missing values into a hash
by Biopolete (Initiate) on Jun 19, 2014 at 14:32 UTC | |
by poj (Abbot) on Jun 19, 2014 at 15:00 UTC | |
by Biopolete (Initiate) on Jun 20, 2014 at 08:16 UTC | |
by poj (Abbot) on Jun 20, 2014 at 08:48 UTC |