http://qs321.pair.com?node_id=680436

valavanp has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks,
I wrote the following perl script to calculate the total marks, percentage and the pass/fail status of the students list. Here i have to calculate the rank of the students. Your suggestions to approach this will be helpful at this point of time.
student.pl ---------- #!/usr/bin/perl use strict; use warnings; open(FILE, "marks.txt") || die("cannot access the file"); my($fullname,$markseachsubject,$totalmarks,$percentage,@marks,@total,$ +marks,$status,@rank,$mark,$value,%records); while(my $line=<FILE>){ next if $line=~/^NAME/; chomp($line); $line=~/(\w+),(\w+),(\d+),(\d+),(\d+)/; $fullname=$1." ".$2; push(@marks,$3,$4,$5); foreach $mark(@marks){ $status=checkpass($mark); } $markseachsubject=$3." ".$4." ".$5." ".$status; $totalmarks=$3+$4+$5; @total=$totalmarks; $percentage=$totalmarks/3; $percentag +e=sprintf("%.2f",$percentage); if($status eq "Pass"){ print $fullname." "."\t".$markseachsubject." "."\t".$totalm +arks." "."\t".$percentage; print "\n"; }else{ print $fullname." "."\t".$markseachsubject." "."\t"; print "\n"; } } #To check whether the student is pass or fail sub checkpass{ $marks=shift; if ($marks > 35){ $status="Pass"; return $status; }else{ $status="Fail"; return $status; } } close FILE;
My input file is:
marks.txt ---------- NAME:SURNAME:MARK1:MARK2:MARK3 john,michael,100,50,60 sam,shane,50,60,70 tom,christo,30,40,50
Thanks all for your help