http://qs321.pair.com?node_id=1233179


in reply to Re: How to get 0 to initialize a value
in thread How to get 0 to initialize a value

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

Replies are listed 'Best First'.
Re^3: How to get 0 to initialize a value
by hippo (Bishop) on Apr 30, 2019 at 11:29 UTC

    SSCCE:

    use strict; use warnings; use Test::More tests => 1; use Test::NoWarnings; my $characters = { Bink => { Name => 'Bink', book => 'M1, M2, m3, m4, 6, m7, M9, m11, m13, 14, 17, m19, m21, M22, + m23, m31, 35, 36, m37, m40, m41', }, Quan => { Name => 'Quan', book => '0', }, }; my @book_list; 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 }