In article <[EMAIL PROTECTED]>, Mark G wrote: > Hi All, > > I need to read in some data and put it into a data structure ex: > > knife #product name > 3 #quantity > 1 #price > > I would like to hold in as a hash referancing other hashes ex: > $ref=read_data(); > > > > sub read_data{ > open $RD,"< value.dat" || print "could not process request\n"; > > while( chomp ( $product = <$RD> ) ){ > chomp ( $quantity = <$RD> ); > chomp ( $price = <$RD> ); > > $inventory{$product}={ > quantity=> $quantityr, > price => $price > }; > } > > return \%inventory; > } > > now how can I access the elements for example: > > foreach( sort keys %{ $ptr } ){ > print the quantity and price of each product > if a given product exist print its price > }
Here is what I came up with: sub price_list { my $ref = shift; my $format = "%15s %4s %5.2f \n"; printf "%15s %4s %5s\n\n", "Product Name", "Qty.", "Price"; foreach my $product ( sort keys %{ $ref } ){ printf $format, $product, $ref->{$product}{quantity}, $ref->{$product}{price}; # If ea. product has lots of attributes, this add'l loop pulls the # values for all keys, but you might have to modify order (store # attribute names in an ordered array)? # my @line; # push @line, $product; # foreach( keys %{ $ref->{$product} } ){ # push @line, $ref->{$product}{ $_ }; # } # printf $format, @line; } # end of product loop } (Disclaimer - just trying this myself - no warranty) -- Kevin Pfeiffer -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]