********** July 9th and 10th expenses example code ********** # Monday, July 9th, 2001 lab example - uses hashes. %expenses is a hash # - may19th6.p use FileHandle; my @files = @ARGV; # $files[0] is "expenses.txt" # $files[1] is "expenses2.txt" my ($file, $line, %expenses); foreach $file (@files) { my $FH = new FileHandle("$file"); while ($line = <$FH>) { my ($person, $expense, $reason) = (substr($line,0,11), substr($line,11,18), substr($line,29,20)); if ($reason =~ m"travel"i) { $expenses{$person} += $expense; } } } foreach $person ( keys %expenses ) { print "$person => " . sprintf( "%9.2f", $expenses{$person} ) . "\n"; } ------------------------------------------------------------------------------ chaos:~/web/perl$ cat expenses.txt DATA FILE #1 Bilbo 44.75 Travel to conference Cinderella 100 Travel to slipper shop Frodo 222.55 See Middle Earth Frodo 111 Travel to work Bilbo 1000.75 Go travelling ------------------------------------------------------------------------------ chaos:~/web/perl$ cat expenses2.txt DATA FILE #2 Bilbo 88000.75 Travelling to new markets Cinderella 7000 Travel in deluxe carriage Frodo 22.55 See Disney World!! :-) Frodo 2000 Misc travel expenses Bilbo 1000.75 Go travelling Gollum 12.98 Travel to Iowa Alice 125000.25 Travel through looking glass ------------------------------------------------------------------------------ chaos:~/web/perl$ perl may19th6.p expen*.txt OUTPUT to STDOUT Gollum => 12.98 Bilbo => 90047.00 ------------- Frodo => 2111.00 Note: chaos:~/web/perl$ ls expen*.txt Cinderella => 7100.00 ------------- Alice => 125000.25 outputs: expenses.txt expenses2.txt