Can Someone explain me why even using Tie::IxHash I can not get the output data in the same order that it was inserted? See code below.
#!/usr/bin/perl
use warnings;
use Tie::IxHash;
use strict;
tie (my %programs, "Tie::IxHash");
while (my $line = <DATA>) {
chomp $line;
my( $company, $site, $program, $product, $price) = split('--', $line);
push @{ $programs{$program}{$product} }, $price;
}
for my $program (keys %programs) {
print "$program\n";
print "list of products: ", join(", ", keys %{$programs{$program}}), "\n";
print "list of prices: ",
join(", ", map { @{$programs{$program}{$_}} } keys %{$programs{$program}}), "\n";
}
__DATA__
COMPANY1--SITE1--PROGRAM1--PRODUCT1--PRICE1
COMPANY1--SITE1--PROGRAM2--PRODUCT1--PRICE1
COMPANY1--SITE1--PROGRAM1--PRODUCT2--PRICE3
COMPANY2--SITE1--PROGRAM1--PRODUCT1--PRICE2