#!/usr/bin/env perl -l use strict; use warnings; my %count; while () { my ($seq, $chr, $loc) = split; #push @{$count{$chr}{$loc}}, $seq; ++$count{$chr}{$loc}; } print 'Reads by specific chromosome and location:'; my @wanted = ([qw{chr1 100}], [qw{chr1 500}], [qw{chr2 200}], [qw{chr3 100}]); for (@wanted) { print "Reads on CHR:$_->[0] LOC:$_->[1] = ", get_loc_reads(@$_); } print 'Reads with positive counts by chromosome and location:'; get_read_counts(); sub get_loc_reads { my ($chr, $loc) = @_; #return exists $count{$chr}{$loc} ? scalar @{$count{$chr}{$loc}} : 0; return exists $count{$chr}{$loc} ? $count{$chr}{$loc} : 0; } sub get_read_counts { for my $chr (sort keys %count) { for my $loc (sort keys %{$count{$chr}}) { #print "Reads on CHR:$chr LOC:$loc = ", scalar @{$count{$chr}{$loc}}; print "Reads on CHR:$chr LOC:$loc = ", $count{$chr}{$loc}; } } } __DATA__ A chr1 100 B chr1 100 C chr1 100 D chr1 200 E chr1 300 F chr1 300 G chr1 300 H chr2 100 I chr2 200 J chr2 200