As an alternative to using Data::Dumper in debugging, I have begun using Test::More::is_deeply. The more I try it, the more I am beginning to like it... :)
#!/usr/bin/perl -w
use strict;
use warnings;
use Test::More qw(no_plan);
my $expected = {
'SET1' => [
[ '0','100','BOOK'],
[ '1','150','PENCIL'],
],
'SET2' => [
[ '2','111','ERASER'],
[ '2','200','PEN'],
[ '0','220','BLACKBOARD'],
[ '1','300','CHALK'],
]
};
my $key;
my %hoa;
my @arr;
while ( <DATA> )
{
chomp; # try taking out chomp and see how test fails.
next if (/^\s+/);
if ( /^SET/ ) {
my @KEY = split (/[\s:]/,$_);
$key = $KEY[2];
#clear array
@arr = (); # try taking this out and see effect on test.
} elsif (/^\d/) {
my @INST = split(/,/,$_);
push @arr, [@INST];
}
$hoa{$key} = [ @arr];
}
is_deeply (\%hoa, $expected); #fails, because of an error in the expec
+ted data structure.
$expected->{SET2}->[0]->[1]=110;
is_deeply (\%hoa, $expected); #Works now.
__DATA__
SET: SET1
0,100,BOOK
1,150,PENCIL
====
SET: SET2
2,110,ERASER
2,200,PEN
0,220,BLACKBOARD
1,300,CHALK
====