#!/opt/perl/bin/perl -w
use strict;
my %keys = (map ({$_ => "SCALAR"} qw /ID TITLE GENE CYTOBAND
LOCUSLINK CHROMOSOME SCOUNT/),
map ({$_ => "ARRAY"} qw /EXPRESS/),
map ({$_ => "HASH"} qw /SEQUENCE PROTSIM/));
my %alldata;
while (<DATA>) {
chomp;
my ($key, $value) = split /\t+/ => $_, 2;
if ($keys {$key} eq "SCALAR") {$alldata {$key} = $value}
elsif ($keys {$key} eq "ARRAY") {
$value =~ s/^;+//;
$alldata {$key} = [split /;/ => $value];
}
elsif ($keys {$key} eq "HASH") {
push @{$alldata {$key}} => {map {split /=/} split /;\s*/ => $v
+alue};
}
else {
die "Unknown key $key found in data.\n"
}
}
__DATA__
-- Abigail