in reply to Re: how to hash this
in thread how to hash this

The four closing braces after the <hr> tag make me curious, as the first opening curly brace is in the while line.

I suspect, without testing it, that if you moved two of the right curlies to beneath the push line, you wouldn't be printing the contents of @products for each line of the file.

Maybe it's the transcription to PM that's making this difficult to read, but I find that a consistent indentation style helps me gauge the flow of code properly. (To be fair, if we were writing this in Python, we wouldn't have the freedom to do otherwise.)

If you indent each block four or more characters with a tab, it'll be easier to see these things in the future.

Replies are listed 'Best First'.
Re: Re: Re: how to hash this
by malaga (Pilgrim) on Apr 03, 2001 at 02:55 UTC
    that worked, and i reformatted it. is this the way to do it?:
    #!c:/Perl/bin/Perl -wT use strict;#force us to pre-declare variables use CGI qw/:standard/; print header;#header type is text/html require "c:/progra~1/apache~1/apache/cgi-bin/getmenu.cgi"; & java; my $value = "Angel"; my $lfilename = "products.pdg"; open (FILE, $lfilename) or &dienice; my @products; while ( <FILE> ) { if ( /^Begin Product (.*)/i ) # We have a product starting line { my %hash; $hash{ 'prodcode' } = $1; # get the product code. $hash{ 'prodname' } = <FILE>; $hash{ 'prodprice' } = <FILE>; $hash{ 'prodweight' } = <FILE>; my $trackinv = <FILE>; $hash{ 'tracking' } = ( $trackinv =~ /(Yes|No)/i ); my $img = <FILE>; my($img2,$img1)=split(/\|/, $img); $hash{ 'img1'} = $img1; $hash{ 'prodtext' } = <FILE>; my $line = <FILE>; last if ( $line =~ /End Product/ ); if ( $line =~ /^\s*Begin Option (.*)$/ ) { my $name = $1; my @option_list; while ( <FILE> ) { last if ( /End Option/ ); push @option_list, $_; } $hash{ $name } = \@option_list; } else { #if there is no option, then stick what's in front of the : +as the hash name, the rest as it's value my ( $name, $value ) = ( $line =~ /^\s*(.*?):(.*)$/ ); $hash{ $name } = $value; } push @products, \%hash; } } print "<HTML>"; print "<TABLE ALIGN\= CENTER>"; print "<TR>"; print "<TD>"; foreach my $ref ( @products ) { if ($ref->{prodname} =~ ($value)) { print "<B>"; print $ref->{prodname}; print "</B>"; print "<br>"; print "<IMG SRC\=\"$ref->{img1}\">"; print "<br>"; print $ref->{prodprice}; print "<br>"; print "<a href\=\"shopper\.exe\?preadd\=action\&amp\;key\=$ref +->{prodcode}\">", "Add to Cart", "</a>"; #print $ref->{prodtext}; print "<br>"; print "<hr>"; } } close (FILE); print "</TD>"; print "</TR>"; print "</TABLE>"; print "<br>"; print "<TABLE>";