The following code works fine.

sub readSetup { open IN, "<setup.ini" or die "cannot open setup.ini\n"; @setupFile = <IN>; close IN; foreach (@setupFile) { chomp; if (/^PROD/) { $Solution = $_; $Feature = 'none'; # Need to keep ordered list for viewing in UI push @Solutions, $Solution; } elsif ( $_ =~ /=/ ) { s/\s*=\s*/=/; ($property, $value) = split /=/, $_; $Installs{$Solution}{$Feature}{$property} = "$value"; } else { $Feature = "$_"; } } } sub print_it { for $Solution (@Solutions) { print "$Solution\n"; for $Feature ( keys %{ $Installs{$Solution} }) { $tab = "\t"; if ($Feature ne "none"){ print "$tab$Feature\n"; } else { $tab = "\t\t"; } for my $property ( keys %{ $Installs{$Solution}{$Feature} }) +{ print "$tab$property = $Installs{$Solution}{$Feature}{$prop +erty}\n"; } } print "\n"; } }

Is there a way of displaying it in the order it came in without using Tie::IxHash module. That is not on my system and will have to put in a ticket to have the module installed. My fear is that users of this script may not have it installed as well and thus would have to got through the same issue.

Running the above code on this file:

PRODUCT1 FEATURE1_PRODUCT1 PROPERTY1_FEATURE1_PRODUCT1=VALUE1 PROPERTY2_FEATURE1_PRODUCT1=VALUE2 PROPERTY3_FEATURE1_PRODUCT1=VALUE3 PRODUCT2 PROPERTY1_PRODUCT2=VALUE1 PROPERTY2_PRODUCT2=VALUE2 PRODUCT3 FEATURE1_PRODUCT3 PROPERTY1_FEATURE1_PRODUCT3=VALUE1 PROPERTY2_FEATURE1_PRODUCT3=VALUE2 PROPERTY3_FEATURE1_PRODUCT3=VALUE3 FEATURE2_PRODUCT3 PROPERTY1_FEATURE1_PRODUCT3=VALUE1 FEATURE3_PRODUCT3 PROPERTY1_FEATURE1_PRODUCT3=VALUE1 PROPERTY2_FEATURE1_PRODUCT3=VALUE2 PROPERTY3_FEATURE1_PRODUCT3=VALUE3 PRODUCT4 PROPERTY1_PRODUCT4=VALUE1 PROPERTY2_PRODUCT4=VALUE2 PRODUCT5

produces this result:

PRODUCT1 FEATURE1_PRODUCT1 PROPERTY2_FEATURE1_PRODUCT1 = VALUE2 PROPERTY1_FEATURE1_PRODUCT1 = VALUE1 PROPERTY3_FEATURE1_PRODUCT1 = VALUE3 PRODUCT2 PROPERTY1_PRODUCT2 = VALUE1 PROPERTY2_PRODUCT2 = VALUE2 PRODUCT3 FEATURE2_PRODUCT3 PROPERTY1_FEATURE1_PRODUCT3 = VALUE1 FEATURE1_PRODUCT3 PROPERTY1_FEATURE1_PRODUCT3 = VALUE1 PROPERTY3_FEATURE1_PRODUCT3 = VALUE3 PROPERTY2_FEATURE1_PRODUCT3 = VALUE2 FEATURE3_PRODUCT3 PROPERTY1_FEATURE1_PRODUCT3 = VALUE1 PROPERTY3_FEATURE1_PRODUCT3 = VALUE3 PROPERTY2_FEATURE1_PRODUCT3 = VALUE2 PRODUCT4 PROPERTY2_PRODUCT4 = VALUE2 PROPERTY1_PRODUCT4 = VALUE1 PRODUCT5

As you can see - the results are unordered.


In reply to Re^2: Reading Install type config file into hash by tmurnane
in thread Reading Install type config file into hash by tmurnane

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.