Hello all, I seem to be stuck on subroutines. I've read the Perl for Beginners Wrox chapter on them, and I'm still a bit lost. My problem is passing a scalar to a subroutine, doing calculations therein, and then returning a value; or basically, subroutines in general.
I started out with a simple exercise, parsing a file, passing the matched line contained in $_ to a subroutine, and then having the subroutine print the line in question. That went rather well. Here's that code: ################################# # Subroutine prototypes ################################ sub FoulParser($); ############################# # Main Program ############################# #!/usr/bin/perl use warnings; use strict; open(STATS, "stats.txt") or die "statfile\n"; my $foul; while (<STATS>) { #if ($_ = /(\w+) (Foul:) (\w+)/) if ($_ =~ /Foul/) { $foul = "$_"; FoulParser($foul); } } ############################ # Subroutine Definitions ########################### # This subroutine takes a scalar $foul, that is a #parsed line from the file, a line that contains the #word "Foul" and it prints out that line. sub FoulParser($foul) { print "$foul\n"; } I then moved on to the exercise that is giving me difficulty, which begins the same way, but then expands like so: In the subroutine,have it tell me whether or not the line matches the criterion and feed the info back to the main function. Use a variable in the main function to tally the total fouls/rebounds/etc. and print the value at the end of the program. Here is the code for that one: ################################# # Subroutine prototypes ################################ sub FoulParser($); sub PrintFouls(); ############################# # Main Program ############################# #!/usr/bin/perl use warnings; use strict; open(STATS, "stats.txt") or die "statfile\n"; my %fouls; my ($type, $totalFouls, $player); my $foul; my $total; while (<STATS>) { if ($_ =~ /(\w+) (Foul:) (\w+)/) #if ($_ =~ /Foul/) { $foul = "$_"; %fouls = FoulParser($foul); } $totalFouls = PrintFouls(); print "Total Fouls, both teams: $total"; } ############################ # Subroutine Definitions ########################### # This subroutine parses the stats file for the different types of fouls # and puts them into a hash. It then returns a hash with the data. sub FoulParser($) { my %foulsData; my %fouls; $fouls{$3}{$1}++; return %fouls; } # This subroutine uses foreach loops for printing out the foultypes, # the player that fouled and the number of those type of fouls an # individual player has. sub PrintFouls() { my $totalFouls; foreach my $type (keys %fouls) { print "\n$type Fouls\n"; foreach my $player (keys %{$fouls{$type}}) { print "$player:$fouls{$type}{$player}\n"; $totalFouls += $fouls{$type}{$player}; } } #print "player: $fouls{$type}{$player}"; return $totalFouls; } I think I've included extra variables where I don't need them, but overall, I'm quite confused with getting the program to do what I want it to do. Any suggestions? Thanks in advance for your help. -stu __________________________________ Do you Yahoo!? SBC Yahoo! DSL - Now only $29.95 per month! http://sbc.yahoo.com -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]