in reply to create unique array
"unique == hash". Consider:
use strict; use warnings; use Data::Dump::Streamer; my @array = <DATA>; chomp @array; my %uniq; for (@array) { my @parts = split "\t"; next if @parts < 3; next if exists $uniq{$parts[0]} and $uniq{$parts[0]}{val} < $part +s[2]; $uniq{$parts[0]} = {val => $parts[2], data => $_}; } Dump (\%uniq); __DATA__ protein1 organism1 0.843534 protein2 organism2 2.45 protein3 organism3 9.5322 protein4 organism4 0.3475474 protein1 organism6 9.4534 protein2 organism7 0.43534 protein2 organism8 1.2434 protein3 organism9 0.000003 protein3 orgnanism10 1.23325
Prints:
$HASH1 = { protein1 => { data => "protein1\torganism1\t0.843534", val => 0.843534 }, protein2 => { data => "protein2\torganism7\t0.43534", val => 0.43534 }, protein3 => { data => "protein3\torganism9\t0.000003", val => 0.000003 }, protein4 => { data => "protein4\torganism4\t0.3475474", val => 0.3475474 } };
|
|---|