in reply to Help requested to find the cause of an "uninitialized value" message
As the diagnostic says that eval is intermittently being passed an undefined value which it's trying to then parse as Perl. You need something beforehand to check for that case.
## Blah blah blah whatever populates $dumper my $dump_error = undef; my %info; if( not defined $dumper ) { $dump_error = 1; warn qq{Got undefined from dumper.\n}; } else { %info = %{ eval $dumper }; } ## Do something like this to handle the error (or if %info was empty, +or . . .) next if $dump_error or %info == 0;
Edit: Of course rather than just calling warn (or whatever local logging routine is germane (e.g. Log::Log4perl)) with a static message you should of course dump out whatever other state you think might give you leads. Alternately rather than blithely trying to use the result from eval $dumper check that it worked first.
my $info_ref = eval $dumper; if( $@ ) { ## Similar notes about what you log apply here too, but . . . warn qq{Problem during dumper eval: $@\n}; } else { %info = %{ $info_ref }; ## Or just use $info_ref->{blah} rather tha +n $info{blah} }
The cake is a lie.
The cake is a lie.
The cake is a lie.
|
|---|