It looks like the file format you are working with is lacking in the best of structure, so you're going to have to apply some explicit rules do handle this.

Here's how I would approach this, not necessarily knowing everything about the file format:

my @products; while ( <FILE> ) { if ( /^Begin Product (.*)/i ) { # We have a product starting line my %hash; $hash{ 'name' } = $1; # get the product name. # I'm guessing on the next 6 lines as to their functions. $hash{ 'description' } = <FILE>; $hash{ 'numberline1' } = <FILE>; $hash{ 'numberline2' } = <FILE>; my $track = <FILE>; $hash{ 'tracking' } = ( $track =~ /(Yes|No)/i ); $hash{ 'images' } = <FILE>; $hash{ 'producttext' } = <FILE>; # Now you have some weirdness to your stuff. Some of # your items have an XML-like structure, some don't. # I'll assuming that if the lines starts with Begin, # it indicates the start of a list of items. Of course, # End Product will end all this. 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; }
But again, your file format is very awkward, and without more details, there's not much more we can do with it. However, what we've given you should give you a good start of how to set up a data structure to use with this file.
Dr. Michael K. Neylon - mneylon-pm@masemware.com || "You've left the lens cap of your mind on again, Pinky" - The Brain

In reply to Re: how to hash this by Masem
in thread how to hash this by malaga

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.