in reply to Re: Output to table
in thread Output to table

Cheers for the help dave! here's my entire code:
CustData.txt --------------------------------------------- 1001,Lord,Flintstone,Fred,M,11/01/1980,99 1002,Lady,Flintstone,Wilma,F,11/03/1988,51 1003,Miss,Flintstone,Pebbles,F,01/01/1999,55 ---------------------------------------------
#!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); 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; } print("\nDo you want to print to screen of to a file? [s] or [f]: "); $question=<STDIN>; while ($question !~ m/[sSfF]/) { print("Please type [s] or [f]\n"); } if ($question =~ m/[sS]/) { $range1=1; $range2=10; $range3=1; $range4=10; $person_count=0; print("\n"); print("Range\t01-10\t11-20\t21-30\t31-40\t41-50\t51-60\t61-70\t71- +80\t81-90\t91-99\n"); print("Count"); for ($counter=0;$counter<10;$counter++) { $range3=$range3+10; $range4=$range4+10; print ("\t ".personCount($range3,$range4)); } print("\n"); print("Percent\t"); for ($counter=0;$counter<10;$counter++) { $range1=$range1+10; $range2=$range2+10; printf(" %.0f\t",(percent($range1,$range2))); } print("\n\n"); } elsif ($question =~ m/[fF]/) { FILENAME: { print("\nFilename: "); chomp($filename=<STDIN>); while ($filename !~ m/^[a-zA-Z]{1}\w{2,7}$/ || $filename =~ m/ +\./) { print("\nInvalid filename.\n Please try again.\n"); redo FILENAME; } if (-e $path) { print("File exists. Overwrite? [y] or [n]: "); $exists=<STDIN>; while ($exists !~ m/[yYnN]/) { print("Please type [y] or [n]\n"); } if ($exists =~ m/[nN]/) { redo FILENAME; } else { print("\n[Saved as ".$filename.".txt]\n\n"); } } else { print("\n[Saved as ".$filename.".txt]\n\n"); } } my $path=($filename.".txt"); open (DATA, ">$path") || die "\nCouldn't open $path for writing: $ +!\n"; $range1=1; $range2=10; $range3=1; $range4=10; $person_count=0; print DATA ("Range\t01-10\t11-20\t21-30\t31-40\t41-50\t51-60\t +61-70\t71-80\t81-90\t91-99 \n"); print DATA ("Count"); for ($counter=0;$counter<10;$counter++) { $range3=$range3+10; $range4=$range4+10; print DATA ("\t ".personCount($range3,$range4)); } print DATA ("\n"); print DATA ("Percent\t"); for ($counter=0;$counter<10;$counter++) { $range1=$range1+10; $range2=$range2+10; printf DATA (" %.0f\t",(percent($range1,$range2))); } print DATA ("\n"); close(DATA); }