open(FILE, "<$ARGV[0]") || die "$!"; count_bases(20); count_bases(30); ... sub count_bases { seek FILE, 0, SEEK_SET; #reset file pointer my $min_quality = shift; foreach $line () #main loop { my @tmp_ar = split("\t", $line); ... #make comparisons and put #s in hash } #### count_bases(20, $ARGV[1]); count_bases(30, $ARGV[1]); ... sub count_bases { my $min_quality = shift; while(<>) { my @tmp_ar = split(); ... #make comparisons and put #s in hash }