Invoice
February 17, 2015
Today’s exercise comes from a text for a first-level programming course.
Praxis Grocery Store
17 Feb 2015
1 2% Milk 2 3.30 6.60
2 93% Ground Beef 1 5.98 5.98
3 Clam Chowder 2 1.78 3.56
4 Honey 1 4.42 4.42
5 6 Eggs 1 1.18 1.18
Subtotal 21.74
Tax 5.25% 1.14
Total 22.88
Your task is to write a program that prompts the user to enter item descriptions, quantities and amounts and produces an invoice as shown above. When you are finished, you are welcome to read or run a suggested solution, or to post your own solution or discuss the exercise in the comments below.
use strict; use Date::Format qw(time2str); my $c = 0; my $t = 0; my @Q; while(1) { print STDERR "Product > "; my $p = <STDIN>; chomp $p; last unless $p =~ /\S/; print STDERR "Quantity> "; my $q = <STDIN>; chomp $q; print STDERR "Price > "; my $a = <STDIN>; chomp $a; $c++; $t+=$q*$a; push @Q, [$c,$p,$q,$a,$q*$a]; } printf ' Praxis Grocery Store %s %s Subtotal %7.2f Tax 5.25%% %7.2f Total %7.2f ', time2str( "%e %b %Y", time ), (join q(), map { sprintf "\n%2d %-20s %2d %7.2f %7.2f", @{$_} } @Q ), $t, $t*0.0525, $t*1.0525;