in reply to use of uninitialized value in string ne

You can add a check that the second element has some value.
perl -wle '$a[1]=[1];print $a[1]->[0];if($a[1]->[1]){print$a[1]->[1]}' r perl -wle '$a[1]=[1,2];print$a[1]->[0];if($a[1]->[1]){print$a[1]->[1]} +' r l
something like this should do it in your code
for ( my $i = 0 ; $i < scalar @results ; $i++ ) { if ( $results[$i]->[0] eq $disease_name_pocus[0] ) { next unless $results[$i]->[1]; if ( $results[$i]->[1] ne $results[ ( $i + 1 ) ]->[1] ) { print MARKER "$results[$i]->[1]\t$results[$i]->[4]\n"; } }

Cheers,
Random.