#!/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; }