Yeah, well, personally I'm not a huge fan of Test::More::is_deeply(). And I think I said it in
that thread too. Anyway....
A quick look at the two data structures using a proper dumper reveals the problem, as does a cursory review of the
code. Your problem is that the code doesnt change the array being pushed into when a new key is found. The following is more or less how I would implement it.
#!/usr/bin/perl -w
use strict;
use warnings;
use Test::More qw(no_plan);
use Data::Dump::Streamer;
my $expected = {
'SET1' => [
[ '0','100','BOOK'],
[ '1','150','PENCIL'],
],
'SET2' => [
[ '2','111','ERASER'],
[ '2','200','PEN'],
[ '0','220','BLACKBOARD'],
[ '1','300','CHALK'],
]
};
my %hoa;
my $key;
while ( <DATA> )
{
chomp;
next unless /^\S/;
if ( /^SET/ ) {
(undef,$key) = split (/[\s:]+/,$_,2);
} elsif (/^\d/) {
my @rec = split(/,/,$_);
push @{$hoa{$key}}, \@rec;
}
}
print Dump(\%hoa,$expected)->Names('got','expect')->Out();
Test::More::is_deeply (\%hoa, $expected);
__DATA__
SET: SET1
0,100,BOOK
1,150,PENCIL
====
SET: SET2
2,111,ERASER
2,200,PEN
0,220,BLACKBOARD
1,300,CHALK
====
---
$world=~s/war/peace/g
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, 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, 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: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
|
|