>34513 -------------------------------MVAIIFDMDGVLYRG -----N-RAIPGVRELIEF-------LKE-R--------G------ >22476 ------------------------------ALKAVLVDLNGTLHI- --------AVPGAQEALKR--------------------------- >56832 ------MARCERLRGA-----ALRDVLG--RAQGVLFDCDGVLWNG- ----E-RAVPGAPELLER-------LAR------------------- >12543 ---------------------------E--QFDILLLDLDGVVYVG- ----D-RLLPGARRALRR----------------------------G >29078 ---------------------------------AVLFDIDGVLVLS- ----W-RAIPGAAETVRQ-------LTH-R--------G-------- #### #!/usr/local/bin/perl use strict; use English; use Data::Dumper; use UNIVERSAL qw(isa); use FileHandle; use Exception; my $alignment = shift; if (!$alignment || ! -e $alignment) { die new Exception("couldnt open names file $alignment $!"); } warn "# Reading alignment data"; my $alignData = getAlignData($alignment); warn "# Got data: ".scalar (keys %$alignData); ################################################# sub getAlignData { my ($fIn) = @ARG; my $fh = new FileHandle($fIn) or die ""; my $count = 0; my $hData = {}; while (my $line = $fh->getline) { my @cols = split /\s+/, $line; # search only for lines with identifier my $field = $cols[0]; my $test = substr($field, 0, 1); if("$test" eq ">") { $count++; my $hEntry = { 'identifier' => $cols[0], 'line' => $count, }; my ($record) = sort ($hEntry->{identifier}); $hData->{$record} = $hEntry; } } foreach my $k ( keys %{$hData} ) { printf "%s -> %s\n", $k, $hData->{$k}; } return $hData; } #### >34513 -> HASH(0x87a3a40) >22476 -> HASH(0x87a3980) >56832 -> HASH(0x8762380) >12543 -> HASH(0x87a3940) >29078 -> HASH(0x8892b30)