in reply to Re: Initialized Variable getting Uninitialized Warning
in thread Initialized Variable getting Uninitialized Warning

Thank you for the response, though I am a little confused by the solution.

The $exception needs to be run through the EcomImportUtilities::ageCheck when the program is run, and only not when the "load old" argument is set. Why would I want that to be nested in an "if" statement? My understanding is by declaring $exception = EcomImportUtilities::ageCheck, it actually runs the subroutine. Am I mistaken? Maybe something like this instead:

unless ($biuw->{const}{load_old}) { my $exception = EcomImportUtilities::ageCheck( biuw => $biuw, feedpath => $feedfullpath, tablename => $TABLE ) if ($exception->{exception} eq 'outofdate' || $exception->{exception} eq 'stillcopying ) { $biuw->{log}->warn( "$feedfullpath is out of date. " . "Loading stopped.\n"); return $exception; } elsif ($exception->{exception} eq 'nonexistent') { $biuw->{log}->warn( "$feedfullpath does not exist. " . "Loading stopped.\n"); return $exception; } }

I think I understand why I am getting the undefined warning now, and I appreciate your help.

Replies are listed 'Best First'.
Re^3: Initialized Variable getting Uninitialized Warning
by ikegami (Patriarch) on Feb 27, 2019 at 18:36 UTC

    Sure, if ageCheck always returns an exception. But then it wouldn't be an exception, would it? So either add the necessary if, or rename the variable to something that makes more sense (such as "result").

    (As for the line breaks, I added them so the code looks better on PerlMonks. There's no reason to keep them.)

      Well said, and that makes perfect sense. Thank you so much for the help! Not only does this work exactly as I needed it to, I grasped a valuable new concept in programming.