#!/usr/bin/perl -w use strict; use warnings; use FileHandle; my (%val, $total); $total=0; format DETAIL = @<<<<<<<<<<<<<$@<<<<<<<<<$@<<<<<$@ $_, $val{$_}{"Price"}, $val{$_}{"Quantity"}, $val{$_}{"Price"} * $val{$_}{"Quant ity"} . format SUMMARY= <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<$@ "-----" Total value good in stock>>>>>>>$@ $total . print "Packaged Goods Organizer\n" . "========================\n"; # Collect the data ENTRY: while (1) { BAR: while (1) { print "Barcode : "; $_=<>; chomp; last ENTRY if ($_ == "0"); last BAR unless ($_ >= 10000000000) || ($_ < 1000000000) || /[^0 -9]/; print "Bad input (numbers only and between 1000000000 and 999999 9999)\n"; } Price: while (1) { print "Price : "; $val{$_}{"Price"}=<>; chomp($val{$_}{"Price"}); last Price unless ($val{$_}{"Price"}=~ /[^0-9\.]/); print "Numbers only\n"; } Quant: while (1) { print "Quantity : "; $val{$_}{"Quantity"}= <>; chomp($val{$_}{"Quantity"}); last Quant unless ($val{$_}{"Quantity"}=~ /[^0-9]/); print "Numbers only\n"; } } # Write the detail records print "\n\n\t\tGoods in Stock\n" . "\t\t==============\n" . "Barcode Price Quantity Value\n" . "-----------------------------------\n"; format_name STDOUT "DETAIL"; foreach (sort keys %val) { write STDOUT; $total += $val{$_}{"Price"} * $val{$_}{"Quantity"}; } # Write the summary format_name STDOUT "SUMMARY"; write STDOUT; close(STDOUT);