#!/usr/bin/perl -w
use strict;
use Data::Dumper;
my $rawdata = qq|
~ItemName1~ItemName2~ItemName3~ItemName4~ItemName5~
~Apple~Orange~Banana~Pear~Watermelon~
~Blue~Red~Yellow~Brown~Purple~
~Uno~Dos~Tres~Cuatro~Cinco~
|;
my @datalines = grep {length} split "\n",$rawdata;
my @listings;
my $header;
foreach my $line (@datalines) {
if ($line =~ /^(.+)<\/COLUMNS>/) {
$header = $1;
} elsif ($line =~ /^(.+)<\/DATA>/) {
push(@listings, $1);
}
}
my %hoa;
my @keys = grep {length} split '~', $header;
for my $listing (@listings) {
my @list = grep {length} split '~', $listing;
push @{$hoa{$keys[$_]}}, $list[$_] for 0..$#keys;
}
for my $listing (@listings) {
my @list = grep {length} split '~', $listing;
my %data;
@data{@keys} = @list;
print "Item1 is ", $data{'ItemName1'}, ", ";
print "Item2 is ", $data{'ItemName2'}, ", ";
print "Item3 is ", $data{'ItemName3'}, "\n";
}