I found the problem in my data. I made the assumption my data was correct. I should know better. Sorry for taking up your time.
I took those values OUT of the hash they were in. I wasn't about to post a hash that has 2,198 keys and each of those keys has at least 8 keys. I simplified my code for this problem. And yes, I know I made a mistake with the @novel_list, but the warning still remains. The actual code is...
for my $key (keys %$characters) {
my $character = $characters->{$key};
my $name = $character->{Name};
# about 30 more lines of code to munge the data
my @novels = split(/, /, $character->{book}); # line 132 in code
my $first_book = $novels[0];
my $first_type = $first_book =~ /^M/ ? 'major' : $first_book =~ /^m/
+ ? 'mentioned' : undef; # line 134 in code
$first_book =~ s/\D//g; # line 135 in code
$character->{intro}->{book} = $book_list[$first_book]; # line 136 in
+ code
$character->{intro}->{type} = $first_type;
$character->{book} = \@novels;
# about 30 more lines of code to munge the data
}
The hash would be (I think)...
my $characters = {
Bink => {
Name => 'Bink',
book => 'M1, M2, m3, m4, 6, m7, M9, m11, m13, 14, 17, m19, m21, M2
+2, m23, m31, 35, 36, m37, m40, m41',
},
Quan => {
Name => 'Quan',
book => '0',
},
};
I just didn't feel like making the hash for it. $character->{book} is still coming back uninitialized for Quan.
The errors are...
character_tests.pl: Use of uninitialized value in split at character_t
+ests.pl line 132
character_tests.pl: Use of uninitialized value $first_book in pattern
+match (m//) at character_tests.pl line 134
character_tests.pl: Use of uninitialized value $first_book in pattern
+match (m//) at character_tests.pl line 134
character_tests.pl: Use of uninitialized value $first_book in substitu
+tion (s///) at character_tests.pl line 135
character_tests.pl: Use of uninitialized value $first_book in array el
+ement at character_tests.pl line 136
No matter how hysterical I get, my problems are not time sensitive. So, relax, have a cookie, and a very nice day!
Lady Aleena
|