Missing $ on loop variable at measurements2.pl line 69. #### #!/usr/local/bin/perl use strict; use warnings; my $path='CustData.txt'; my @range = ("10-20", "20-30", "30-40", "41-50", "51-60", "61-70", "71-80","81-90", "91-99"); my @count; my @percent; my %HoH; open(DATA, "<$path") || die "Couldn't open $path for reading: $!\n"; my $output; open my $fd, '>', \$output or die "open: $!"; while () { chomp; my ($id, $title, $surname, $forename, $sex, $dob, $vision) = split(/,/); $HoH{$id} = {'title' => $title, 'surname' => $surname, 'forename' => $forename, 'sex' => $sex, 'dob' => $dob, 'vision' => $vision,}; } close(DATA); my $range1=1; my $range2=10; my $range3=1; my $range4=10; my $person_count=0; sub personCount { my ($x,$y) = @_; my ($vision_total,$person_count)=0; foreach my $id (sort keys %HoH) { if( ($HoH{$id}->{'vision'}>=$x) & ($HoH{$id}->{'vision'}<=$y) ) { ++$person_count; $vision_total=$vision_total+$HoH{$id}->{'vision'}; } } return int($person_count); } sub percent { my ($x,$y) = @_; my $percent = 0; my ($total_person_count,$vision_total,$person_count)=0; foreach my $id (sort keys %HoH) { ++$total_person_count; } foreach my $id (sort keys %HoH) { if( ($HoH{$id}->{'vision'}>=$x) & ($HoH{$id}->{'vision'}<=$y) ) { ++$person_count; $vision_total=$vision_total+$HoH{$id}->{'vision'}; } } return $percent = ($person_count/$total_person_count)*100; } print $fd ("Range\t"); foreach (@range) { printf $fd ("%7s", $_); } print $fd ("\n"); for my ($counter=0;$counter<9;$counter++) { $range3=$range3+10; $range4=$range4+10; my $personCount = personCount($range3,$range4); push (@count, $personCount); } print $fd ("Count\t"); foreach (@count) { printf $fd ("%7s", $_); } print $fd ("\n"); for my ($counter=0;$counter<9;$counter++) { $range1=$range1+10; $range2=$range2+10; my $percent = sprintf("%.0f", percent($range1,$range2)); push (@percent, $percent); } print $fd ("Percent\t"); foreach (@percent) { printf $fd ("%7s", $_); } print $fd ("\n"); print $fd ("\n"); close $fd;