Update: i removed the close and this is what i get. And as more of an insight to the error... when i changed the second format name to something other than STDOUT it wouldnt print because it is trying to write to an unopened file handle.
#!/usr/bin/perl -w
use strict;
use warnings;
print "Packaged Goods Organizer\n========================\n";
my %val;my $total=0;
DO:{
BAR : print "Barcode : ";$_=<>;chomp;last if ($_ == "0");
if (($_ >= 10000000000)|| ($_ < 1000000000)||/[^0-9]/){
print "Bad input (numbers only and between 1000000000 and 9999
+999999)\n";
goto BAR;
}else{
Price : print "Price : ";
$val{$_}{"Price"}=<>;
chomp($val{$_}{"Price"});
if ($val{$_}{"Price"}=~ /[^0-9\.]/){
print "Numbers only\n";
goto Price;
}
Quant : print "Quantity : ";
$val{$_}{"Quantity"}= <>;
chomp($val{$_}{"Quantity"});
if ($val{$_}{"Quantity"}=~ /[^0-9]/){
print "Numbers only\n";
goto Quant;
}
}goto DO;
};
print "\n\n\t\tGoods in Stock\n\t\t==============\nBarcode Price
+Quantity Value\n-----------------------------------\n";
foreach (sort keys %val){
format STDOUT =
@<<<<<<<<<<<<<$@<<<<<<<<<$@<<<<<$@
$_, $val{$_}{"Price"}, $val{$_}{"Quantity"}, $val{$_}{"Price"} * $val{
+$_}{"Quantity"}
.
write STDOUT;
$total += $val{$_}{"Price"} * $val{$_}{"Quantity"};
}close (STDOUT);
format STDOUT =
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<$@
"-----"
Total value good in stock>>>>>>>$@
$total
.
write STDOUT;
OUTPUTFormat STDOUT redefined at C:\Documents and Settings\\My Documents\per
+ltest
\Perl-1.pl line 38.
Packaged Goods Organizer
========================
Barcode : 1231231231
Price : 22
Quantity : 1
Barcode : 0
Goods in Stock
==============
Barcode Price Quantity Value
-----------------------------------
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<$-
Total value good in stock>>>>>>>$0
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<$-
Total value good in stock>>>>>>>$2