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 ====
In reply to Re: How to Ask a Datastructures Question (with Test::More)
by demerphq
in thread How to Ask a Datastructures Question (with Test::More)
by tphyahoo
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |