in reply to Re: Output to table
in thread Output to table
#!usr/local/bin/perl my $path='CustData.txt'; open(DATA, "<$path") || die "Couldn't open $path for reading: $!\n"; while (<DATA>) { 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); $range1=1; $range2=10; $range3=1; $range4=10; $person_count=0; print("Range\t10-20\t20-30\t30-40\t41-50\t51-60\t61-70\t71-80\t81-90\t +91-99\n"); print("Count"); for ($counter=0;$counter<9;$counter++) { $range3=$range3+10; $range4=$range4+10; print("\t ".personCount($range3,$range4)); } print("\n"); print("Percent\t"); for ($counter=0;$counter<9;$counter++) { $range1=$range1+10; $range2=$range2+10; printf(" %.0f\t",(percent($range1,$range2))); } print("\n"); sub personCount { ($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 { ($x,$y) = @_; $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; }
|
|---|